<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:admin="http://webns.net/mvcb/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:content="http://purl.org/rss/1.0/modules/content/">

    <channel>
    <title>Planet Erlang</title>
    <link>http://www.planeterlang.org/en/planet/planet</link>
    <description></description>
    <dc:language>en</dc:language>
    <dc:creator>Planet Erlang</dc:creator>
    <dc:rights>Copyright 2012</dc:rights>
    <dc:date>2012-05-16T17:31:31+00:00</dc:date>
    <admin:generatorAgent rdf:resource="http://www.expressionengine.com/" />
    

    <item>
      <title>Erlang Software Engineer / Senior Developer , Stockholm, London, Krakow, East  and West coast USA</title>
      <link>http://www.planeterlang.org/en/planet/article/Erlang_Software_Engineer_Senior_Developer_Stockholm_London_Krakow_East_and_/</link>
      <guid>http://www.planeterlang.org/en/planet/article/Erlang_Software_Engineer_Senior_Developer_Stockholm_London_Krakow_East_and_/</guid>
      <author></author>
      <description><![CDATA[<p><strong>Role Description:</strong></p>
<p>With our portfolio of customer facing projects and consultancy  assignments increasing in all of our offices, we are looking for  talented individuals to join our young and dynamic team. We are looking  for both experienced and junior developers with knowledge of functional  programming languages such as Erlang, Clojure, Haskell, Scala and the  imperative languages like C, Java and Objective-C.</p>
<p>The right candidates will join small teams of highly skilled systems  engineers developing software using Erlang/OTP. You will gain valuable  experience in exciting state-of-the-art systems within the Financial  Services, Automotive, Telecom and Gaming sectors. As our clients are  spread on six continents, you will be required to be flexible about  travel to customer locations for short periods when required.</p>
<p>&nbsp;<strong>Responsibilities:</strong></p>
<ul>
</ul>
<ul>
<li>With experience of real time or embedded software and associated hardware, this role would be responsible for the design and programming of related operating software. </li>
<li>Liaise with Electronic Design Engineers to ensure that the functionality meets specifications.</li>
<li>May be responsible for other Software Engineers within a project team. </li>
<li>Design, code, test and support of Erlang and related software, including some research. </li>
<li>Develop solutions using distributed concurrent programming, software packaging and release   <ul>
<li>Write and test code in Erlang and occasionally in other languages such as C, Java, Clojure, Haskell, Scala &amp; Objective-C .</li>
<li>Experienced programmers will be expected to mentor and coach junior staff.</li>
</ul>
</li>
</ul>
<ul>
</ul>
<p><strong>Minimum Education, </strong><strong>Certification, Training:</strong></p>
<p>A Degree or Masters in Computer Science, or an Erlang Foundation level certification.</p>
<p>&nbsp;<strong>Skills and experience required:</strong></p>
<p><span style="text-decoration: underline;">Essential</span></p>
<ul>
<li>Experienced in the use of the Erlang Open Telecoms Platform for the delivery of complex systems </li>
<li>Must have demonstrable experience of designing and delivering multiple projects in at least one industry sector </li>
<li>About three years demonstrable software development and implementation experience </li>
<li>Demonstrable knowledge of Erlang programming which will be tested.</li>
<li>Experience with Linux, OS X and Solaris operating systems</li>
<li>Good verbal and written communication in English</li>
<li>Good customer facing and presentation skills.</li>
</ul>
<p><span style="text-decoration: underline;">Desirable</span></p>
<ul>
<li>Experience with languages such as C and Java  
<ul>
<li>Knowledge of Distributed Computing, in a multicore environment </li>
<li>Track record of being able to achieve project milestones and complete tasks.</li>
<li>Experience of implementation of soft real time servers</li>
<li>Experience with interconnection protocols (HTTP, XMPP, SMPP, ...)</li>
<li>Experience with Agile Methods, including Test Driven Development </li>
<li>Problem-solving and thinking laterally as part of a team to meet the needs of the project.</li>
<li>Ability to plan and estimate work.</li>
</ul>
</li>
</ul>
<p><strong>Eligibility:</strong></p>
<p>The right candidate will work in a rapidly expanding company and  community, receive a competitive salary with full benefits.</p>
<p><strong>Equal opportunities:</strong></p>
<p>Erlang Solutions is an equal opportunities employer and positively  encourages applications from suitably qualified and eligible candidates  regardless of sex, race, disability, age, sexual orientation, gender  reassignment, religion or belief, marital status, or pregnancy and  maternity.</p> 
]]>
</description>
      <dc:subject>Companies, Erlang Solutions</dc:subject>
      <dc:date>2012-05-16T17:31:31+00:00</dc:date>
    </item>

    <item>
      <title>Senior Erlang Software Engineer / Architect, Stockholm, London, Krakow, East  and West coast USA</title>
      <link>http://www.planeterlang.org/en/planet/article/Senior_Erlang_Software_Engineer_Architect_Stockholm_London_Krakow_East_and_/</link>
      <guid>http://www.planeterlang.org/en/planet/article/Senior_Erlang_Software_Engineer_Architect_Stockholm_London_Krakow_East_and_/</guid>
      <author></author>
      <description><![CDATA[<p><strong>Role Description:</strong></p>
<p>With our portfolio of customer facing projects and consultancy assignments increasing in all of our offices, we are looking for talented individuals to join our young and dynamic team. We are looking for both experienced and junior developers with knowledge of functional programming languages such as Erlang, Clojure, Haskell, Scala and the imperative languages like C, Java and Objective-C.</p>
<p>&nbsp;The right candidates will join small teams of highly skilled systems engineers developing software using Erlang/OTP. You will gain valuable experience in exciting state-of-the-art systems within the Financial Services, Automotive, Telecom and Gaming sectors. As our clients are spread on six continents, you will be required to be flexible about travel to customer locations for short periods when required.</p>
<p>&nbsp;<strong>Responsibilities:</strong></p>
<ul>
<li>With an in depth knowledge of real time or embedded software and associated hardware, this role would be responsible for the architecture design and programming of related operating software. </li>
<li>Liaise with Electronic Design Engineers to ensure that the functionality meets specifications.</li>
<li>May be responsible for other Software Engineers within a project team. </li>
<li>Design, code, test and support of Erlang and related software, including some research. </li>
<li>Develop solutions using distributed concurrent programming, software packaging and release   <ul>
<li>Write and test code in Erlang and occasionally in other languages such as C, Java, Clojure, Haskell, Scala &amp; Objective-C .</li>
<li>Experienced programmers will be expected to mentor and coach junior staff.</li>
</ul>
</li>
</ul>
<p><strong>Minimum Education, </strong><strong>Certification, Training:</strong><strong></strong></p>
<p>A Degree or Masters in Computer Science, or an Erlang Foundation level certification.</p>
<p>&nbsp;<strong>Skills and experience required:</strong></p>
<p><span style="text-decoration: underline;">Essential</span></p>
<ul>
<li>Experienced in the use of the Erlang Open Telecoms Platform for the delivery of complex systems. </li>
<li>Must have demonstrable experience of architecture design and delivering multiple large projects in different industry sectors. </li>
<li>More than five years demonstrable software development and implementation experience </li>
<li>Experience with Linux, OS X and Solaris operating systems</li>
<li>Good verbal and written communication in English</li>
<li>Good customer facing and presentation skills.</li>
</ul>
<p><span style="text-decoration: underline;">Desirable</span></p>
<ul>
<li>Experience with languages such as C and Java  
<ul>
<li>Knowledge of Distributed Computing, in a multicore environment </li>
<li>Track record of being able to achieve project milestones and complete tasks.</li>
<li>Experience of implementation of soft real time servers</li>
<li>Experience with interconnection protocols (HTTP, XMPP, SMPP, ...)</li>
<li>Experience with Agile Methods, including Test Driven Development </li>
<li>Problem-solving and thinking laterally as part of a team to meet the needs of the project.</li>
<li>Ability to plan and estimate work.</li>
</ul>
</li>
</ul>
<p>&nbsp;<strong>Eligibility:</strong></p>
<p>The right candidate will work in a rapidly expanding company and  community, receive a competitive salary with full benefits.</p>
<p><strong>Equal opportunities:</strong></p>
<p>Erlang Solutions is an equal opportunities employer and positively encourages applications from suitably qualified and eligible candidates regardless of sex, race, disability, age, sexual orientation, gender reassignment, religion or belief, marital status, or pregnancy and maternity.</p> 
]]>
</description>
      <dc:subject>Companies, Erlang Solutions</dc:subject>
      <dc:date>2012-05-16T17:31:29+00:00</dc:date>
    </item>

    <item>
      <title>Getting Flymake and Rebar to Play Nice</title>
      <link>http://www.planeterlang.org/en/planet/article/Getting_Flymake_and_Rebar_to_Play_Nice/</link>
      <guid>http://www.planeterlang.org/en/planet/article/Getting_Flymake_and_Rebar_to_Play_Nice/</guid>
      <author>Eric B Merritt</author>
      <description><![CDATA[<p>A
</p> 
]]>
</description>
      <dc:subject>Blogs, Erlware</dc:subject>
      <dc:date>2012-05-15T22:39:32+00:00</dc:date>
    </item>

    <item>
      <title>25 May 2012: Poznan Erlang User Group Event</title>
      <link>http://www.planeterlang.org/en/planet/article/25_May_2012_Poznan_Erlang_User_Group_Event/</link>
      <guid>http://www.planeterlang.org/en/planet/article/25_May_2012_Poznan_Erlang_User_Group_Event/</guid>
      <author></author>
      <description><![CDATA[<h2>Further Details</h2>
<h3>Date : <span style="color: #888888;">11 May 2012</span></h3>
<h3>Time : <span style="color: #888888;">18:00 -19:00<br /></span></h3>
<h3>Limit: <span style="color: #888888;">50 people</span></h3>
<h3><strong>Location</strong>: <a style="color: #860404;" href="http://www.innowacyjni.eu/?page_id=2">ZOO Coworking Space, ul. Zwierzyniecka 20, Poznań (Poland)<br /> II floor</a></h3>
<h3>You can register <a style="color: #860404;" href="http://www.erlang-solutions.com/etc/register?event=11+May+2012+-+Krakow+Erlang+User+Group">here</a>.</h3>
<p><br /> <br /></p>
<h1>The Programme:</h1>
<h3><span style="color: #888888;">18:00 </span>&#8220;Erlang Use Cases&#8221;<span style="color: #888888;"> Michał Ślaski</span></h3>
<p>The plan of the presentation is TBC</p>
<p><span style="color: #888888;"><strong>Bio:</strong> Michal Slaski (Senior Erlang consultant and software architect &nbsp; Erlang Solutions Ltd,&nbsp; Speaker,&nbsp; A Senior Software Consultant at Erlang &nbsp; Solutions)<br /> Michal Slaski started programming in Erlang at the AGH - University of &nbsp; Science and Technology in Krakow, Poland, when working on his Masters &nbsp; prototyping massively multiplayer online games. After graduating, he &nbsp; joined Erlang Solutions on key projects around the world. He is &nbsp; currently heading Erlang Solutions&#8217; new Krakow office in Poland, keeping &nbsp; the Erlang flag up high.</span></p>
<h3><span style="color: #888888;">18:30 </span>&#8220;Riak in the hosting system of tablica.pl&#8221;<span style="color: #888888;"> Rafał Skrzypek&nbsp;</span></h3>
<p>The plan of the presentation:<br />1. Who are we? What we do? (aside from the tablica.pl project)<br />2. Brief overview of the technologies we use.<br />3. Storing images in our services - what solutions did we use, what problems did we encounter?<br />4. What is Riak and why did we decided to use it?<br />5. What were the original problems Riak made us face?<br />6. What is our current configuration and what kind of data do we store?<br />7. What are our plans for the future use of Riak?</p>
<p><span style="color: #888888;"><strong>Bio:</strong> I am the IT administrator responsible for implementation and maintenance<br /> of the infrastructure for services based on tablica.pl framework.<br /></span><br /><br /></p>
<h3>Everyone is welcome. Come along learn, listen, debate, shape, join in, share  experiences, exchange ideas and network.</h3> 
]]>
</description>
      <dc:subject>Companies, Erlang Solutions</dc:subject>
      <dc:date>2012-05-15T16:31:25+00:00</dc:date>
    </item>

    <item>
      <title>14 May 2012: Supporting ComputerAid through Pedal Power to Brussels</title>
      <link>http://www.planeterlang.org/en/planet/article/14_May_2012_Supporting_ComputerAid_through_Pedal_Power_to_Brussels/</link>
      <guid>http://www.planeterlang.org/en/planet/article/14_May_2012_Supporting_ComputerAid_through_Pedal_Power_to_Brussels/</guid>
      <author></author>
      <description><![CDATA[<p>Erlang Solutions&#8217; Steve Roberts will be embarking on a gruelling 3 day bike ride from London to Brussels to raise money for his chosen charity, ComputerAid International.</p>
<p>ComputerAid take unwanted computers, refurbish them and give them to African non profit organisations such as schools and hospitals. Their work doesnt just stop there. They ensure that the organisations know how use the technology they are being given so they can learn for example how to use technology to improve crop growing.<br />&nbsp;<br />The endurance session starts at 7.15am on Friday 18th May reaching Calais late in the evening on day 1.&nbsp; Day 2 is another 7.15am start reaching the beautiful town on Bruges late in the afternoon.&nbsp; Sunday is a lay-in with a start time of 7.45, arriving Brussels finish line, late afternoon.</p>
<p>Eurostar London to Brussels: 1 hour 57 minutes</p>
<p>Pedal power to Brussels: 3 days</p>
<p>&nbsp;</p>
<p><a style="color: #860404;" href="http://www.justgiving.com/LON-BRX-Steve-Roberts">Click here to sponsor Steve! </a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p> 
]]>
</description>
      <dc:subject>Companies, Erlang Solutions</dc:subject>
      <dc:date>2012-05-14T17:30:14+00:00</dc:date>
    </item>

    <item>
      <title>10 May 2012: Erlang Embedded with Raspberry Pi Video Tutorials</title>
      <link>http://www.planeterlang.org/en/planet/article/10_May_2012_Erlang_Embedded_with_Raspberry_Pi_Video_Tutorials/</link>
      <guid>http://www.planeterlang.org/en/planet/article/10_May_2012_Erlang_Embedded_with_Raspberry_Pi_Video_Tutorials/</guid>
      <author></author>
      <description><![CDATA[<p style="text-align: justify;"><span style="font-size: small;"><span style="font-family: helvetica;">Sweet things are better &nbsp; shared, so we  are pleased to announce <a style="color: #860404;" href="http://www.youtube.com/watch?v=HjbNyA1ASkE">our series of video tutorials</a> on &nbsp; Erlang</span></span><span style="font-size: small;"><span style="font-family: helvetica;"> Embedded with Raspberry Pi. With two videos already released,&nbsp; popularity is growing by the minute. </span></span><span style="font-family: helvetica;"><span style="font-size: small;"><a href="https://crm.erlang-solutions.com/{ESL}">Follow us on Twitter</a> </span></span><span style="font-size: small;"><span style="font-family: helvetica;">to get regular updates, give Omer suggestions and see what he will be coming  up with next.</span></span></p>
<p style="text-align: justify;"><span style="font-size: small;"><span style="font-family: helvetica;">What exactly is Raspberry Pi and why should we pay attention to it? It &nbsp; is essentially a credit-card sized computer that plugs into your TV.&nbsp; The  design is based on Broadcom BCM2835 SoC, which includes a 700MHz  ARM11  processor, VideoCore IV GPU and 256 megabytes of RAM. It is a  pretty  powerful platform as far as embedded systems go, and with strong  demand  for these boards it seems like the R-Pi Foundation was caught  off-guard;&nbsp; suppliers are now quoting July delivery dates for new  orders.</span></span></p>
<p><span style="font-size: small;"><span style="font-family: helvetica;">&nbsp;</span></span><span style="font-size: small;"></span></p> 
]]>
</description>
      <dc:subject>Companies, Erlang Solutions</dc:subject>
      <dc:date>2012-05-10T17:01:15+00:00</dc:date>
    </item>

    <item>
      <title>10 May 2012:&amp;nbsp; Scalability of the Erlang VM and FreeBSD (reaching 2.5M+ concurrent connections/box)</title>
      <link>http://www.planeterlang.org/en/planet/article/10_May_2012_Scalability_of_the_Erlang_VM_and_FreeBSD_reaching_2.5M_concurre/</link>
      <guid>http://www.planeterlang.org/en/planet/article/10_May_2012_Scalability_of_the_Erlang_VM_and_FreeBSD_reaching_2.5M_concurre/</guid>
      <author></author>
      <description><![CDATA[<p><br /><span style="font-size: small;"><span style="font-family: helvetica;">They reduced the number of  contentions in BEAM and tweaked OTP in order to improve its throughput.&nbsp; Their suggestions for writing scalable Erlang programs include:&nbsp; preferring os:timestamp to erlang:now and partitioning ets and mnesia  tables in order to localise access to smaller number of processes. They  reached 2.5M+ concurrent connections/box from an initial server load of  ~200k connections. They found that Erlang has *awesome* SMP scalability,&nbsp; as it can reach &gt;85% CPU utilization across 24 logical CPU cores  uniformly and the CPU utilization grows almost linearly with the number  of connections.<br /><br />They have <a href="https://github.com/reedr/otp">published as open source all their changes here</a>.&nbsp; Some of their suggestions are now enabled by default (e.g. number of  memory allocators being equal to the number of schedulers in the VM) but  most of their changes are not included as they are system-specific.</span></span></p> 
]]>
</description>
      <dc:subject>Companies, Erlang Solutions</dc:subject>
      <dc:date>2012-05-10T17:01:14+00:00</dc:date>
    </item>

    <item>
      <title>Erlang Common Test Continuous Integration</title>
      <link>http://www.planeterlang.org/en/planet/article/Erlang_Common_Test_Continuous_Integration/</link>
      <guid>http://www.planeterlang.org/en/planet/article/Erlang_Common_Test_Continuous_Integration/</guid>
      <author>Eric B Merritt</author>
      <description><![CDATA[<p>A
</p> 
]]>
</description>
      <dc:subject>Blogs, Erlware</dc:subject>
      <dc:date>2012-05-09T17:01:52+00:00</dc:date>
    </item>

    <item>
      <title>11 May 2012: Krakow Erlang User Group</title>
      <link>http://www.planeterlang.org/en/planet/article/11_May_2012_Krakow_Erlang_User_Group/</link>
      <guid>http://www.planeterlang.org/en/planet/article/11_May_2012_Krakow_Erlang_User_Group/</guid>
      <author></author>
      <description><![CDATA[<h2></h2>
<h2>Further Details</h2>
<h3>Date : <span style="color: #888888;">11 May 2012</span></h3>
<h3>Time : <span style="color: #888888;">16:00</span></h3>
<h3><strong>Location</strong>: <span style="color: #888888;">Szpitalna 38/3a, Krakow </span></h3>
<h3>Email <a style="color: #860404;" href="mailto:Katarzyna.kraus@erlang-solutions.com"><span style="color: #860404;">Katarzyna.kraus@erlang-solutions.com</span></a> to register</h3>
<p>&nbsp;</p>
<h1>The Programme</h1>
<h2>Rebar &ndash; building and converting a project</h2>
<p>The first part of the presentation describes the process of building a  new project using Rebar - including the catalogue structure and required  commands. The second part demonstrates a conversion of an existing  project from a generic build system to Rebar.<br /> This presents one with an opportunity to examine the crucial  configuration parameters as well as ways of solving common Rebar  problems. <br /> The project I chose to converse is Streamfile - a filehosting service.&nbsp; Currently it operates on a build system probably designed for a  different service. It has a complicated structure and sometimes build  errors are difficult to solve. The goal is to build Streamfile using a  clear structure of catalogues and configuration files. Thanks to the  complexity of this project, the demonstration will cover a whole range  of tasks: from libraries to C code compilation.</p>
<p>&nbsp;</p>
<h2>About Piotr Nosek</h2>
<p>I&#8217;m a Polish employee of Erlang Solutions, who (to be honest) never thought he would have an occasion to work with such a great IT team. My adventure with Erlang began early in my studies, but the real stuff started with Erlang by Example course. I didn&#8217;t suspect that ordinary programming course will end up with a job interview. And thus I&#8217;ve been here for over 1.5 year, really enjoying projects from all around the world.<br />My main area of expertise so far covered webdevelopment in Erlang. My priorities are slowly shifting now, but still sometimes I have an occasion to work on our company websites.</p>
<p>As a hobby, I&#8217;m interested in applying Erlang in online gaming. For me, this is something completely new, so I&#8217;m at the beginning of a whole journey but I really hope to develop my skills in this matter. Also I&#8217;m still trying to find some time to further develop my open source project, which is C library for Riak.<br /><br /><br /><br /></p> 
]]>
</description>
      <dc:subject>Companies, Erlang Solutions</dc:subject>
      <dc:date>2012-05-09T16:01:24+00:00</dc:date>
    </item>

    <item>
      <title>You, Too, Can Be on the Cutting Edge of Functional Programming Research</title>
      <link>http://www.planeterlang.org/en/planet/article/You_Too_Can_Be_on_the_Cutting_Edge_of_Functional_Programming_Research/</link>
      <guid>http://www.planeterlang.org/en/planet/article/You_Too_Can_Be_on_the_Cutting_Edge_of_Functional_Programming_Research/</guid>
      <author>James Hague</author>
      <description><![CDATA[<p>In 1999 I earned $200 writing an essay titled <a href="http://www.gamasutra.com/view/feature/3367/toward_programmer_interactivity_.php">Toward Programmer Interactivity: Writing Games in Modern Programming Languages</a>. It was an early, optimistic exploration of writing commercial games in Haskell, ML, and Lisp.<br />
<br></br><br></br>It was not a good article.<br />
<br></br><br></br>It&#8217;s empty in the way that so many other &#8220;Hey everyone! Functional programming! Yeah!&#8221; essays are. I demonstrated the beauty of Haskell in the small, but I didn&#8217;t offer any solutions for how to write state-heavy games in it. There are a few silly errors in the sample code, too.<br />
<br></br><br></br>Occasionally during the following years, I searched for information about writing games in functional languages, and that article kept coming up. Other interesting references turned up too, like papers on Functional Reactive Programming, but apparently I had accidentally become an authority. An authority who knew almost nothing about the subject.<br />
<br></br><br></br>I still didn&#8217;t know if a mostly-functional style would scale-up past the usual toy examples. I didn&#8217;t know how to build even a simple game without destructive assignment. I wasn&#8217;t sure if there were even any legitimate benefits. Was this a better way of implementing game ideas than the usual tangled web of imperative code&#8212;or madness?<br />
<br></br><br></br>As an experiment, I decided to port an action game that I wrote in 1997 to mostly-pure Erlang. It wasn&#8217;t a toy, but a full-featured game chock full of detail and special cases. I never finished the port, but I had the bulk of the game playable and running smoothly, and except for a list of special cases that I could write on a &#8220;Hello! My Name is&#8221; label, it was purely functional. I wrote about what I learned in <a href="http://prog21.dadgum.com/23.html">Purely Functional Retrogames</a>.<br />
<br></br><br></br>Now when I search for info about writing games in a functional style, <i>that&#8217;s</i> what I find.<br />
<br></br><br></br>Sure, there are some other sources out there. Several times a year a new, exuberant &#8220;Haskell / ML / Erlang is a perfect match for games!&#8221; blog entry appears. Functional Reactive Programming keeps evolving. A couple of people have slogged through similar territory and managed to bang-out real games in Haskell (<a href="http://raincat.bysusanlin.com/">Raincat</a> is a good example).<br />
<br></br><br></br>If you want to be on the cutting edge of functional programming research, it&#8217;s easy. Pick something that looks like a poor match for state-free code, like a video game, and start working on it. Try to avoid going for the imperative pressure release valves too quickly. At some point you&#8217;re going to need them, but make sure you&#8217;re not simply falling back on old habits. Keep at it, and it won&#8217;t be long before you&#8217;re inventing solutions to problems no one else has had to deal with.<br />
<br></br><br></br>If you come up with something interesting, I&#8217;d like to hear about it.<br />
<br></br><br></br>(If you liked this, you might enjoy <a href="http://prog21.dadgum.com/18.html">Back to the Basics of Functional Programming</a>.)
</p> 
]]>
</description>
      <dc:subject>Blogs, Programming in the 21st Century</dc:subject>
      <dc:date>2012-05-08T08:00:00+00:00</dc:date>
    </item>

    <item>
      <title>The Most Important Decisions are Non&#45;Technical</title>
      <link>http://www.planeterlang.org/en/planet/article/The_Most_Important_Decisions_are_Non-Technical/</link>
      <guid>http://www.planeterlang.org/en/planet/article/The_Most_Important_Decisions_are_Non-Technical/</guid>
      <author>James Hague</author>
      <description><![CDATA[<p>I occasionally get puzzled questions about a <a href="http://prog21.dadgum.com/57.html">parenthetical remark</a> I made in 2010: that I no longer program for a living. It&#8217;s true. I haven&#8217;t been a full-time programmer since 2003. The short version of these questions is &#8220;Why?&#8221; The longer version is &#8220;Wait, you&#8217;ve got a super technical programming blog and you seem to know all this stuff, but you don&#8217;t want to work as a programmer?&#8221;<br />
<br></br><br></br>The answer to both of these is that I realized that the most important decisions are non-technical. That&#8217;s a bare and bold statement, so let me explain.<br />
<br></br><br></br>In the summer of 1993, I answered a newspaper ad looking for a &#8220;6502 hacker&#8221; (which I thought was amusing; the Pentium was released that same year) and got a job with a small company near Seattle writing Super Nintendo games. I had done game development prior to that, but it was me working by myself in my parents&#8217; living room.<br />
<br></br><br></br>The first SNES game I worked on was a Tarzan-themed platformer authorized by the estate of <a href="http://en.wikipedia.org/wiki/Edgar_Rice_Burroughs">Edgar Rice Burroughs</a> (it had no connection to the Disney movie, which was still six years in the future). I had fun working out ways of getting tropical fish to move in schools and creating behaviors for jungle animals like monkeys and birds. It was a great place to work, with the ten or so console programmers all sharing one big space.<br />
<br></br><br></br>The only problem was that the game was clearly going to be awful. It was a jumble of platformer clichés, and it wasn&#8217;t fun. All the code tweaking and optimization and monkey behavior improvements weren&#8217;t going to change that. To truly fix it required a project-level rethink of why were building it in the first place. As a &#8220;6502 hacker&#8221; I wasn&#8217;t in a position to make those decisions.<br />
<br></br><br></br>While it&#8217;s fun to discuss whether an application should be implemented in Ruby or Clojure, to write beautiful and succinct code, to see how far purely functional programming can be taken, these are all secondary to defining the user experience, to designing a comfortable interface, to keeping things simple and understandable, to making sure you&#8217;re building something that&#8217;s actually usable by the people you&#8217;re designing it for. Those are more important decisions.<br />
<br></br><br></br>Whatever happened to that Tarzan game? Even though it had been previewed in <i>Nintendo Power</i>, the publisher wisely chose to pay for the year of development and shelve the finished project.
</p> 
]]>
</description>
      <dc:subject>Blogs, Programming in the 21st Century</dc:subject>
      <dc:date>2012-05-06T08:00:00+00:00</dc:date>
    </item>

    <item>
      <title>Sinan Releases and Being Right</title>
      <link>http://www.planeterlang.org/en/planet/article/Sinan_Releases_and_Being_Right/</link>
      <guid>http://www.planeterlang.org/en/planet/article/Sinan_Releases_and_Being_Right/</guid>
      <author>Tristan Sloughter</author>
      <description><![CDATA[<p>A
</p> 
]]>
</description>
      <dc:subject>Blogs, Erlware</dc:subject>
      <dc:date>2012-05-04T22:33:07+00:00</dc:date>
    </item>

    <item>
      <title>ejabberd 2.1.11 bugfix release</title>
      <link>http://www.planeterlang.org/en/planet/article/ejabberd_2.1.11_bugfix_release/</link>
      <guid>http://www.planeterlang.org/en/planet/article/ejabberd_2.1.11_bugfix_release/</guid>
      <author>badlop</author>
      <description><![CDATA[<p>ejabberd 2.1.11 has been released, and it contains several bug fixes, improvements and new features.</p>
<p>The changes are:</p>
<ul>
<li>HTTP service
<ul>
<li> Fix ejabberd_http:get_line
</li><li> Don&#8217;t use binary:match to extract lines from binaries
</li><li> Parse and encode https header names like native http parser does
</li><li> Parse correctly https request split into multiple packets
</li><li> Properly handle HEAD request in mod_http_bind (EJAB-1538)
</li><li> New option default_host for handling requests with ambiguous Host (EJAB-1261)
</li></ul>
</li><li><p> ODBC
</p><ul>
<li> New ODBC support for mod_announce<br />
</li></ul></li></ul><p><a href="http://www.ejabberd.im/ejabberd-2.1.11" target="_blank">read more</a></p> 
]]>
</description>
      <dc:subject>Software, ejabberd Community Site</dc:subject>
      <dc:date>2012-05-04T17:06:57+00:00</dc:date>
    </item>

    <item>
      <title>Erlang Infrastructure Engineer, Silicon Valley / San Francisco Bay Area</title>
      <link>http://www.planeterlang.org/en/planet/article/Erlang_Infrastructure_Engineer_Silicon_Valley_San_Francisco_Bay_Area2/</link>
      <guid>http://www.planeterlang.org/en/planet/article/Erlang_Infrastructure_Engineer_Silicon_Valley_San_Francisco_Bay_Area2/</guid>
      <author></author>
      <description><![CDATA[<p>&bull; Experience with writing production-quality software in Erlang OTP, highly scalable &amp; concurrent systems, a double plus!<br />&bull;&nbsp; Ability to perform database development ( e.g., designing schemas, when  to use stored procedures, understanding of ORM tools, etc.)<br />&bull; Proficiency in Linux<br />&bull; Experience building scalable web applications/services<br />&bull; Experience in distributed computing and multi-tier application development, with experience in developing frameworks, a plus.<br />&bull; Good communication skills, be able to discuss/defend/document your ideas<br />&bull; A strong belief or experience in Agile and iterative development approaches<br />&bull;&nbsp; A Computer Science or Maths degree, or be passionate about applying the  latest software ideas to their personal and professional life.<br />&nbsp;<br /><strong>Desirable:</strong></p>
<p>&bull; Be able to do basic Linux administration tasks<br />&bull; Have experience with one or more of the following:</p>
<ul>
<li>Ejabberd/XMPP</li>
</ul>
<ul>
<li>&nbsp;RabbitMQ</li>
</ul>
<p>&nbsp;&bull; Be a startup junkie who wants to see a new idea (and company) succeed.</p> 
]]>
</description>
      <dc:subject>Companies, Erlang Solutions</dc:subject>
      <dc:date>2012-05-02T15:31:25+00:00</dc:date>
    </item>

    <item>
      <title>Cowboy and Batman.js for Erlang Web Development</title>
      <link>http://www.planeterlang.org/en/planet/article/Cowboy_and_Batman.js_for_Erlang_Web_Development/</link>
      <guid>http://www.planeterlang.org/en/planet/article/Cowboy_and_Batman.js_for_Erlang_Web_Development/</guid>
      <author>Tristan Sloughter</author>
      <description><![CDATA[<p>A
</p> 
]]>
</description>
      <dc:subject>Blogs, Erlware</dc:subject>
      <dc:date>2012-04-30T16:59:11+00:00</dc:date>
    </item>

    <item>
      <title>Erlang, Cowboy and Batman.js for Building Web Applications</title>
      <link>http://www.planeterlang.org/en/planet/article/Erlang_Cowboy_and_Batman.js_for_Building_Web_Applications/</link>
      <guid>http://www.planeterlang.org/en/planet/article/Erlang_Cowboy_and_Batman.js_for_Building_Web_Applications/</guid>
      <author>Tristan Sloughter</author>
      <description><![CDATA[<p>A
</p> 
]]>
</description>
      <dc:subject>Blogs, Erlware</dc:subject>
      <dc:date>2012-04-27T17:11:28+00:00</dc:date>
    </item>

    <item>
      <title>A Forgotten Principle of Compiler Design</title>
      <link>http://www.planeterlang.org/en/planet/article/A_Forgotten_Principle_of_Compiler_Design/</link>
      <guid>http://www.planeterlang.org/en/planet/article/A_Forgotten_Principle_of_Compiler_Design/</guid>
      <author>James Hague</author>
      <description><![CDATA[<p>That a clean system for separately compiled modules appeared in Modula-2, a programming language designed by Niklaus Wirth in 1978, but not in the 2011 C++ standard&#8230;hmmm, no further comment needed. But the successor to Modula-2, Oberon, is even more interesting.<br />
<br></br><br></br>With Oberon, Wirth <i>removed</i> features from Modula-2 while making a few careful additions. It was a smaller language overall. Excepting the extreme minimalism of Forth, this is the first language I&#8217;m aware of where simplicity of the implementation was a concern. For example, nested modules were rarely used in Modula-2, but they were disproportionately complex to compile, so they were taken out of Oberon.<br />
<br></br><br></br>That simplicity carried over to optimizations performed by the compiler. Here&#8217;s <a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.39.9965">Michael Franz</a>:
</p><blockquote><p>Optimizing compilers tend to be much larger and much slower than their straightforward counterparts. Their designers usually do not follow Oberon&#8217;s maxim of making things &#8220;as simple as possible&#8221;, but are inclined to completely disregard cost (in terms of compiler size, compilation speed, and maintainability) in favor of code-quality benefits that often turn out to be relatively marginal. Trying to make an optimizing compiler as simple as possible and yet as powerful as necessary requires, before all else, a measurement standard, by which both simplicity and power can be judged.<br />
<br></br><br></br>For a compiler that is written in the language it compiles, two such standards are easily found by considering first the time required for self-compilation, and then the size of the resulting object program. With the help of these benchmarks, one may pit simplicity against power, requiring that every new capability added to the compiler &#8220;pays its own way&#8221; by creating more benefit than cost on account of at least one of the measures.
</p></blockquote><p>The principle is &#8220;compiler optimizations should pay for themselves.&#8221;<br />
<br></br><br></br>Clearly it&#8217;s not perfect (the Oberon compiler doesn&#8217;t make heavy use of floating point math, for example, so floating point optimizations may not speed it up or make it smaller), but I like the spirit of it.<br />
<br></br><br></br>(If you liked this, you might enjoy <a href="http://prog21.dadgum.com/75.html">One Small Step Toward Reducing Programming Language Complexity</a>.)
</p> 
]]>
</description>
      <dc:subject>Blogs, Programming in the 21st Century</dc:subject>
      <dc:date>2012-04-25T08:00:00+00:00</dc:date>
    </item>

    <item>
      <title>Can You Be Your Own Producer?</title>
      <link>http://www.planeterlang.org/en/planet/article/Can_You_Be_Your_Own_Producer/</link>
      <guid>http://www.planeterlang.org/en/planet/article/Can_You_Be_Your_Own_Producer/</guid>
      <author>James Hague</author>
      <description><![CDATA[<p>I&#8217;ve worked on personal projects where I went badly off track and didn&#8217;t realize it until much later. What I needed was someone to nudge me in the right direction, someone to objectively point out the bad decisions I was making.<br />
<br></br><br></br>What I needed was a producer.<br />
<br></br><br></br>When a band is recording an album, the producer isn&#8217;t there to write songs or play instruments, but to provide focus and give outside perspective. A good producer should say &#8220;Guys, you sound great live, but it&#8217;s not coming through in the recording; can we try getting everyone in here at same time and see how that goes?&#8221; or &#8220;We&#8217;ve got three songs with similar wandering breakdowns; if you could replace one, which would it be?&#8221;<br />
<br></br><br></br>(Here I should point out that a producer in the music production sense is different than a producer in film or in video games. Same term, different meanings.)<br />
<br></br><br></br>If you&#8217;re a lone wolf or part of a small group building something in your basement, there&#8217;s tremendous value in being able to step back and get into the producer mindset. Maybe you can&#8217;t be both a producer and developer at the same time, but recognizing that you need to switch hats periodically is key.<br />
<br></br><br></br>What are the kinds of question you should be asking when in your producer role?<br />
<br></br><br></br><b>Are you letting personal technology preferences cloud your vision?</b> Haskell is a great language, but you&#8217;re writing a lot of code that you&#8217;d get for free with Python. Yes, Android is open to some extent and iOS isn&#8217;t, but should you be dismissing the entire iPhone / iPad market for that reason?<br />
<br></br><br></br><b>Are you avoiding doing the right thing because it&#8217;s hard?</b> If everyone you show your project to suggests the same useful feature, disregarding it because it would take a month of rearchitecting usually isn&#8217;t a valid response.<br />
<br></br><br></br><b>Are you simply copying existing ideas without offering anything new?</b> It&#8217;s so easy to see a finished application and jump into writing your own version. But think about the problem that it was designed to solve instead of copying the same solution. A painting program doesn&#8217;t have to use the blueprint laid out by <a href="http://en.wikipedia.org/wiki/MacPaint">MacPaint</a> in 1984. An IDE doesn&#8217;t have to follow the <a href="http://prog21.dadgum.com/69.html">project tree view on the left</a> schematic.<br />
<br></br><br></br><b>Are you spending too much time building your own solutions instead of using what&#8217;s already out there?</b> Should you really be writing another webserver or markdown formatter or JSON decoder?<br />
<br></br><br></br><b>Do you understand your audience?</b> If you&#8217;re building an application for graphic artists, are you familiar with how graphic artists work? Are you throwing out features that would be met with horrified stares?
</p> 
]]>
</description>
      <dc:subject>Blogs, Programming in the 21st Century</dc:subject>
      <dc:date>2012-04-22T08:00:00+00:00</dc:date>
    </item>

    <item>
      <title>Use and Abuse of Garbage Collected Languages</title>
      <link>http://www.planeterlang.org/en/planet/article/Use_and_Abuse_of_Garbage_Collected_Languages/</link>
      <guid>http://www.planeterlang.org/en/planet/article/Use_and_Abuse_of_Garbage_Collected_Languages/</guid>
      <author>James Hague</author>
      <description><![CDATA[<p>The garbage collection vs. manual memory management debates ended years ago. As with the high-level vs. assembly language debates which came before them, it&#8217;s hard to argue in favor of tedious bookkeeping when there&#8217;s an automatic solution. Now we use Python, Ruby, Java, Javascript, Erlang, and C#, and enjoy the productivity benefits of not having to formally request and release blocks of bytes.<br />
<br></br><br></br>But there&#8217;s a slight, gentle nagging&#8212;not even a true worry&#8212;about this automatic memory handling layer: what if when my toy project grows to tens or hundreds of megabytes of data, it&#8217;s no longer invisible? What if, despite the real-time-ness and concurrent-ness of the garbage collector, there&#8217;s a 100 millisecond pause in the middle of my real-time application? What if there&#8217;s a hitch in my sixty frames per second video game? What if that hitch lasts two full seconds? The real question here is &#8220;If this happens, then <i>what can I possibly do</i> about it?&#8221;<br />
<br></br><br></br>These concerns aren&#8217;t theoretical. There are periodic reports from people for whom the garbage collector has switched from being a friendly convenience to the enemy. Maybe it&#8217;s because of a <a href="http://java.dzone.com/articles/how-tame-java-gc-pauses">super-sized heap</a>? Or maybe <a href="http://samsaffron.com/archive/2011/10/28/in-managed-code-we-trust-our-recent-battles-with-the-net-garbage-collector">accidentally triggering worst-case behavior in the GC</a>? Or maybe it&#8217;s simply using an environment <a href="http://www.phoboslab.org/log/2011/08/are-we-fast-yet">where GC pauses didn&#8217;t matter until recently</a>?<br />
<br></br><br></br>Writing a concurrent garbage collector to handle gigabytes is a difficult engineering feat, but any student project GC will tear through a 100K heap fast enough to be worthy of a &#8220;soft real-time&#8221; label. While it should be obvious that keeping data sizes down is the first step in reducing garbage collection issues, it&#8217;s something I haven&#8217;t seen much focus on. In image processing code written in Erlang, I&#8217;ve used the atom <tt>transparent</tt> to represent pixels where the alpha value is zero (instead of a full tuple: <tt>{0,0,0,0}</tt>). Even better is to work with runs of transparent pixels (such as <tt>{transparent, Length}</tt>). Data-size optimization in dynamic languages is the new cycle counting.<br />
<br></br><br></br>There&#8217;s a more often recommended approach to solving garbage collection pauses, and while I don&#8217;t want to flat-out say it&#8217;s wrong, it should at least be viewed with suspicion. The theory is that more memory allocations means the garbage collector runs more frequently, therefore the goal is to reduce the number of allocations. So far, so good. The key technique is to preallocate pools of objects and reuse them instead of continually requesting memory from and returning it to the system.<br />
<br></br><br></br>Think about that for a minute. Manual memory management is too error prone, garbage collection abstracts that away, and now the solution to problems with garbage collection is to manually manage memory? This is like writing your own file buffering layer that sits on top of buffered file I/O routines. The whole point of GC is that you can say &#8220;Hey, I&#8217;d like a new [list/array/object],&#8221; and it&#8217;s quick, and it goes away when no longer referenced. Memory is a lightweight entity. Need to build up an intermediate list and then discard it? Easy! No worries!<br />
<br></br><br></br>If this isn&#8217;t the case, if memory allocations in a garbage  collected language are still something to be calorie-counted, then maybe the memory management debates aren&#8217;t over.<br />
<br></br><br></br>(If you liked this, you might enjoy <a href="http://prog21.dadgum.com/15.html">Why Garbage Collection Paranoia is Still (sometimes) Justified</a>.)
</p> 
]]>
</description>
      <dc:subject>Blogs, Programming in the 21st Century</dc:subject>
      <dc:date>2012-04-21T08:00:00+00:00</dc:date>
    </item>

    <item>
      <title>100,000 Lines of Assembly Language</title>
      <link>http://www.planeterlang.org/en/planet/article/100000_Lines_of_Assembly_Language/</link>
      <guid>http://www.planeterlang.org/en/planet/article/100000_Lines_of_Assembly_Language/</guid>
      <author>James Hague</author>
      <description><![CDATA[<p>I occasionally get asked about writing Super Nintendo games. How did anyone manage to work on projects consisting of hundreds of thousands of lines of 16-bit assembly language?<br />
<br></br><br></br>The answer is that it&#8217;s not nearly as Herculean as it sounds.<br />
<br></br><br></br>The SNES hardware manual is a couple of hundred pages. I don&#8217;t remember the exact number, so I&#8217;ll shoot high: 400 pages. Add in a verbose 65816 assembly language book and combined we&#8217;re talking 800 or 900 pages tops. That&#8217;s eight percent of the <a href="http://prog21.dadgum.com/129.html">total I came up with</a> for having a complete understanding of an OS X based computer: nearly 11,000 pages.<br />
<br></br><br></br>Sure, there are whole classes of errors that you can make in assembly language that are invisible in C. For example, here&#8217;s some old-school x86 code:
</p><pre>mov ax, 20
mov bx, -1
int XX
</pre><p>This sets up a couple of parameters and calls an interrupt. It looks right, it works, it may even ship in a commercial product, but then there&#8217;s a new MS-DOS version and it crashes. Why? Because the second parameter should be passed in the dx register, not bx. It only worked because a previous interrupt happened to return -1 in dx, so the second line above isn&#8217;t actually doing anything useful. But those kinds of errors are rare.<br />
<br></br><br></br>The secrets of working entirely in assembly language are being organized, thinking before implementing, and keeping things clean and understandable. That sounds a lot like how to write good Javascript or C++. Steve McConnell&#8217;s <i>Code Complete</i> is actually a guidebook for the Super Nintendo game programmer.<br />
<br></br><br></br>But all this talk of programming languages and hardware is backward. Jordan Mechner designed and built the original Prince of Persia on an Apple II. The game and the editor for laying out the levels are written in assembly code for the 8-bit 6502. He kept a <a href="http://jordanmechner.com/ebook/">journal</a> while writing the game.<br />
<br></br><br></br>You might expect the journal to be filled with coding philosophies and 6502 tricks, but there&#8217;s little of that. Sure, he&#8217;s doing difficult tech work behind the scenes, but that&#8217;s not what he&#8217;s writing about. They&#8217;re the journals of a designer and a director, of someone living far away from home after graduating from college, with long detours into his screenwriting aspirations (and don&#8217;t let that scare you off; they&#8217;re fascinating).<br />
<br></br><br></br>He may have had second set of coding journals, but I like to think he didn&#8217;t. Even if he did, he was clearly thinking about more than the techie side of things, in the way that a novelist&#8217;s personal journal is unlikely to be filled with ramblings about grammar and sentence structure.<br />
<br></br><br></br>(If you liked this, you might enjoy <a href="http://prog21.dadgum.com/46.html">The Pure Tech Side is the Dark Side</a>.)
</p> 
]]>
</description>
      <dc:subject>Blogs, Programming in the 21st Century</dc:subject>
      <dc:date>2012-04-13T08:00:00+00:00</dc:date>
    </item>

	
    </channel>
</rss>
