<?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-01-31T07:00:00+00:00</dc:date>
    <admin:generatorAgent rdf:resource="http://www.expressionengine.com/" />
    

    <item>
      <title>Pretend This Optimization Doesn&#8217;t Exist</title>
      <link>http://www.planeterlang.org/en/planet/article/Pretend_This_Optimization_Doesnt_Exist/</link>
      <guid>http://www.planeterlang.org/en/planet/article/Pretend_This_Optimization_Doesnt_Exist/</guid>
      <author>James Hague</author>
      <description><![CDATA[<p>In any modern discussion of algorithms, there&#8217;s mention of being cache-friendly, of organizing data in a way that&#8217;s a good match for the memory architectures of CPUs. There&#8217;s an inevitable attempt at making the concepts concrete with a benchmark manipulating huge&#8212;1000x1000&#8212;matrices. When rows are organized sequentially in memory, no worries, but switch to column-major order, and there&#8217;s a very real slowdown. This is used to drive home the impressive gains to be had if you keep cache-friendliness in mind.<br />
<br></br><br></br>Now forget all about that and get on with your projects.<br />
<br></br><br></br>It&#8217;s difficult to design code for non-trivial problems. <a href="http://prog21.dadgum.com/108.html">Beautiful code</a> quickly falls apart, and it takes effort to keep things both organized and correct. Now add in another constraint: that the solution needs to access memory in linear patterns and avoid chasing pointers to parts unknown.<br />
<br></br><br></br>You&#8217;ll go mad trying to write code that way. It&#8217;s like writing a short story without using the letter &#8220;t.&#8221;<br />
<br></br><br></br>If you fixate on the inner workings of caches, fundamental and useful techniques suddenly turn horrible.&nbsp; Reading a single global byte loads an entire cache line. Think objects are better? Querying a byte-sized field is just as bad. Spreading the state of a program across objects scattered throughout memory is guaranteed to set off alarms when you run a hardware-level performance analyzer.<br />
<br></br><br></br>Linked lists are a worst case, potentially jumping to a new cache line for each element. That&#8217;s damning evidence against languages like Haskell, Clojure, and Erlang. Yet some naive developers insist on using Haskell, Clojure, and Erlang, and they cavalierly disregard the warnings of the hardware engineers and use lists as their primary data structure&#8230;.<br />
<br></br><br></br>...and they manage to write code where performance is not an issue.<br />
<br></br><br></br>(If you liked this, you might enjoy <a href="http://prog21.dadgum.com/98.html">Impressed by Slow Code</a>.)
</p> 
]]>
</description>
      <dc:subject>Blogs, Programming in the 21st Century</dc:subject>
      <dc:date>2012-01-31T07:00:00+00:00</dc:date>
    </item>

    <item>
      <title>27 January 2012: Erlang Solutions embarks on an Erlang Embedded KTP</title>
      <link>http://www.planeterlang.org/en/planet/article/27_January_2012_Erlang_Solutions_embarks_on_an_Erlang_Embedded_KTP/</link>
      <guid>http://www.planeterlang.org/en/planet/article/27_January_2012_Erlang_Solutions_embarks_on_an_Erlang_Embedded_KTP/</guid>
      <author></author>
      <description><![CDATA[<p>Erlang Solutions is proud to announce that Erlang Solutions and the University of Kent has embarked on another KTP project together. Previously Erlang Solutions has successfully been involved in three KTP projects with the University of Kent with whom a strong partnership has been formed.<br /><br />The aim of this project is to bring the benefits of concurrent systems development using Erlang to the field of embedded systems; through investigation, analysis, software development and evaluation. <br /><br />A major aim of the project is to create a version of ESL&rsquo;s development tools for designing and developing ARM based embedded systems, which will support a variety of hardware devices and be readily accessible for industrial users.<br /><br />To find out more on the Knowledge Transfer Partnership programme click <a style="color: #860404;" href="http://www.ktponline.org.uk/faqs/">here</a>.</p> 
]]>
</description>
      <dc:subject>Companies, Erlang Solutions</dc:subject>
      <dc:date>2012-01-27T15:30:10+00:00</dc:date>
    </item>

    <item>
      <title>08 February 2012: Erlang Express 3&#45;day Course in San Francisco on 8 February</title>
      <link>http://www.planeterlang.org/en/planet/article/08_February_2012_Erlang_Express_3-day_Course_in_San_Francisco_on_8_February/</link>
      <guid>http://www.planeterlang.org/en/planet/article/08_February_2012_Erlang_Express_3-day_Course_in_San_Francisco_on_8_February/</guid>
      <author></author>
      <description><![CDATA[<p>Erlang Solutions is hosting their world renowned <a style="color: #860404;" href="http://www.erlang-solutions.com/training/course/5/erlang-express">Erlang Express Course</a> and you&#8217;re invited! So whether you&#8217;re a developer who&#8217;s recently heard a lot about this unfamiliar language and want to learn more about it, or you need to brush up on your basic skills&#8212;this is a rare opportunity to get familiar with the language in a smaller, hands-on interactive training with Technical Founder and O&rsquo;Reilly author, Francesco Cesarini. <a style="color: #860404;" href="https://www.erlang-solutions.com/training/schedule/erlang-express/82/delegates">Book your place now!</a><br /><br />After this course you will:<br />&nbsp;&nbsp; &nbsp;&bull;&nbsp;&nbsp; &nbsp;Understand the basics of Erlang.<br />&nbsp;&nbsp; &nbsp;&bull;&nbsp;&nbsp; &nbsp;Read/Write/Design Erlang Programs.<br />&nbsp;&nbsp; &nbsp;&bull;&nbsp;&nbsp; &nbsp;Have a good knowledge of the development environment and tools.<br />&nbsp;&nbsp; &nbsp;&bull;&nbsp;&nbsp; &nbsp;Have the basic needs to attend the Advanced Erlang/Open Telecom Platform (OTP)course<br /><br />In 3 days, this introductory course will give participants the knowledge to read, write and structure Erlang programs. <br />&nbsp;<br />The course contains all the Erlang basics such as sequential and concurrent programming, alongside error handling. The Erlang development environment is presented, with a special emphasis on the Erlang mode for Emacs alongside the major debugging tools. Good and bad programming practices are discussed, as are tools used to profile the system. OTP design principles and concepts are sneaked into the material as well as the exercises.<br />&nbsp;<br />This exclusive training is capped at 12 people so as to keep the training as efficient as possible, sign up while you can!</p>
<p>Find out the full course content <a style="color: #860404;" href="http://www.erlang-solutions.com/training/course/5/erlang-express">here</a> and register for the course <a style="color: #860404;" href="https://www.erlang-solutions.com/training/schedule/erlang-express/82/delegates">here</a>.</p> 
]]>
</description>
      <dc:subject>Companies, Erlang Solutions</dc:subject>
      <dc:date>2012-01-27T14:01:15+00:00</dc:date>
    </item>

    <item>
      <title>08 February 2012: Erlang Express 3&#45;day Course &#45; San Francisco, 8&#45;10 February</title>
      <link>http://www.planeterlang.org/en/planet/article/08_February_2012_Erlang_Express_3-day_Course_-_San_Francisco_8-10_February/</link>
      <guid>http://www.planeterlang.org/en/planet/article/08_February_2012_Erlang_Express_3-day_Course_-_San_Francisco_8-10_February/</guid>
      <author></author>
      <description><![CDATA[<p>Erlang Solutions is hosting their world renowned <a style="color: #860404;" href="http://www.erlang-solutions.com/training/course/5/erlang-express">Erlang Express Course</a> and you&#8217;re invited! So whether you&#8217;re a developer who&#8217;s recently heard a lot about this unfamiliar language and want to learn more about it, or you need to brush up on your basic skills&#8212;this is a rare opportunity to get familiar with the language in a smaller, hands-on interactive training with Technical Founder and O&rsquo;Reilly author, Francesco Cesarini. <a style="color: #860404;" href="https://www.erlang-solutions.com/training/schedule/erlang-express/82/delegates">Book your place now!</a><br /><br />After this course you will:<br />&nbsp;&nbsp; &nbsp;&bull;&nbsp;&nbsp; &nbsp;Understand the basics of Erlang.<br />&nbsp;&nbsp; &nbsp;&bull;&nbsp;&nbsp; &nbsp;Read/Write/Design Erlang Programs.<br />&nbsp;&nbsp; &nbsp;&bull;&nbsp;&nbsp; &nbsp;Have a good knowledge of the development environment and tools.<br />&nbsp;&nbsp; &nbsp;&bull;&nbsp;&nbsp; &nbsp;Have the basic needs to attend the Advanced Erlang/Open Telecom Platform (OTP)course<br /><br />In 3 days, this introductory course will give participants the knowledge to read, write and structure Erlang programs. <br />&nbsp;<br />The course contains all the Erlang basics such as sequential and concurrent programming, alongside error handling. The Erlang development environment is presented, with a special emphasis on the Erlang mode for Emacs alongside the major debugging tools. Good and bad programming practices are discussed, as are tools used to profile the system. OTP design principles and concepts are sneaked into the material as well as the exercises.<br />&nbsp;<br />This exclusive training is capped at 12 people so as to keep the training as efficient as possible, sign up while you can!</p>
<p>Find out the full course content <a style="color: #860404;" href="http://www.erlang-solutions.com/training/course/5/erlang-express">here</a> and register for the course <a style="color: #860404;" href="https://www.erlang-solutions.com/training/schedule/erlang-express/82/delegates">here</a>.</p> 
]]>
</description>
      <dc:subject>Companies, Erlang Solutions</dc:subject>
      <dc:date>2012-01-27T14:01:13+00:00</dc:date>
    </item>

    <item>
      <title>Systems Engineers / Software Consultants, Stockholm, London, Krakow, East  and West coast USA</title>
      <link>http://www.planeterlang.org/en/planet/article/Systems_Engineers_Software_Consultants_Stockholm_London_Krakow_East_and_Wes/</link>
      <guid>http://www.planeterlang.org/en/planet/article/Systems_Engineers_Software_Consultants_Stockholm_London_Krakow_East_and_Wes/</guid>
      <author></author>
      <description><![CDATA[<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&nbsp; like C, Java and Objective-C.</p>
<p><br />You may already be passionate about and experienced in Erlang, or if you are not already a skilled Erlang programmer, we will train you in the language. The right candidates will join small teams of highly skilled systems engineers developing software using Erlang/OTP.</p>
<p>You will gain valuable experience in exciting state-of-the-art systems within the Telecom, Financial Services, Banking, Messaging and Logistics sectors. As our clients are spread on six continents, there will be an opportunity to travel if you&#8217;re up for it. &nbsp;<br /><br /><strong>1.&nbsp;&nbsp;&nbsp; Responsibilities:</strong></p>
<ul>
<li>Research, design, development, test and support of Erlang and related software. </li>
<li>Develop solutions using distributed concurrent programming, software&nbsp;packaging and release.</li>
<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>
<p><strong>2.&nbsp;&nbsp;&nbsp; Skills and experience required: </strong></p>
<ul>
<li>Good programming skills and experience with one or more language such as C, Java, Haskell and Erlang. </li>
<li>Knowledge of Distributed Computing.</li>
<li>Experience of implementation of soft, real time servers in a multicore environment would be a nice to have.</li>
<li>Experience with interconnection protocols (HTTP, XMPP, SMPP, ...)</li>
<li>Experience with Linux, OS X and Solaris operating systems.</li>
<li>Experience with Agile Methods, including Test Driven Development will be an advantage.</li>
<li>Problem-solving and thinking laterally as part of a team, or individually, to meet the needs of the project.</li>
<li>Good verbal and written communication in English. </li>
<li>Good customer facing and presentation skills.</li>
</ul>
<p><strong>3. Minimum Education, Certification, Training:</strong><br />A Degree or Masters in Computer Science, or an Erlang Foundation level certification. <br /><strong><br />4. Eligibility:</strong><br />The right candidate will work in a rapidly expanding company and community, receive a competitive salary with full benefits and stock options.</p> 
]]>
</description>
      <dc:subject>Companies, Erlang Solutions</dc:subject>
      <dc:date>2012-01-25T18:00:21+00:00</dc:date>
    </item>

    <item>
      <title>Erlang/OTP Release Structure</title>
      <link>http://www.planeterlang.org/en/planet/article/ErlangOTP_Release_Structure/</link>
      <guid>http://www.planeterlang.org/en/planet/article/ErlangOTP_Release_Structure/</guid>
      <author>Eric B Merritt</author>
      <description><![CDATA[<p>A
</p> 
]]>
</description>
      <dc:subject>Blogs, Erlware</dc:subject>
      <dc:date>2012-01-23T17:34:39+00:00</dc:date>
    </item>

    <item>
      <title>Virtual Joysticks and Comfortably Poor Solutions</title>
      <link>http://www.planeterlang.org/en/planet/article/Virtual_Joysticks_and_Comfortably_Poor_Solutions_/</link>
      <guid>http://www.planeterlang.org/en/planet/article/Virtual_Joysticks_and_Comfortably_Poor_Solutions_/</guid>
      <author>James Hague</author>
      <description><![CDATA[<p>Considering that every video game system ever made shipped with a physical joystick or joypad, the smooth, featureless glass of mobile touchscreens was unnerving. How to design a control scheme when there is no controller?<br />
<br></br><br></br>One option was to completely dodge the issue, and that led to an interesting crop of games. Tip the entire device left and right and read the accelerometer. Base the design around single-finger touches or drawing lines or dragging objects. But the fallback solution for games that need more traditional four or eight way input is to display a faux controller for the player to manipulate.<br />
<br></br><br></br>The virtual joystick option is obvious and easy, but it needs pixels, filling the bottom of the screen with a bitmap representation of an input device. <a href="http://itunes.apple.com/us/app/pac-man/id281656475?mt=8">Sometimes</a> it isn&#8217;t too obtrusive. <a href="http://itunes.apple.com/us/app/shamus/id418463286?mt=8">Other times</a> it&#8217;s impressively ugly. Aesthetics aside, there&#8217;s a fundamental flaw: you can&#8217;t feel the image. There&#8217;s no feedback indicating that your hand is in the right place or if it slides out of the control area.<br />
<br></br><br></br>There may have been earlier attempts, but <a href="http://www.dadgum.com/halcyon/BOOK/MINTER.HTM">Jeff Minter</a>&#8216;s <a href="http://itunes.apple.com/us/app/minotaur-rescue/id408475782?mt=8">Minotaur Rescue</a>, released just over a year ago, was the first good alternative to a virtual joystick that I ran across. Minter&#8217;s insight was that directional movement anywhere on the screen contains useful information. Touch, then slide to the right: that&#8217;s the same as moving a virtual controller to the right. Without lifting your finger, slide up: that&#8217;s upward motion. There&#8217;s no need to restrict input to a particular part of the screen; anywhere is fine.<br />
<br></br><br></br>He even extended this to work for twin-stick shooter controls. The first touch is for movement, the second for shooting, then track each independently. Again, it&#8217;s not <i>where</i> you touch the screen, it&#8217;s <i>when</i> and <i>how</i>.<br />
<br></br><br></br>It&#8217;s all clean and obvious in retrospect, but it took getting past the insistence that putting pictures of joysticks and buttons on the screen was the only approach.
</p> 
]]>
</description>
      <dc:subject>Blogs, Programming in the 21st Century</dc:subject>
      <dc:date>2012-01-23T07:00:00+00:00</dc:date>
    </item>

    <item>
      <title>Couchbase Meetup at new HQ</title>
      <link>http://www.planeterlang.org/en/planet/article/Couchbase_Meetup_at_new_HQ/</link>
      <guid>http://www.planeterlang.org/en/planet/article/Couchbase_Meetup_at_new_HQ/</guid>
      <author>Damien Katz</author>
      <description><![CDATA[<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="meetup_logo.gif" src="http://damienkatz.net/pics/meetup_logo.gif" width="" height="" class="mt-image-none" style="" /></span></p>

<p>Join us Thursday January 19 at 6:30 PM at our brand new Headquarters (aka Fort Awesome). <a href="http://www.meetup.com/The-San-Francisco-Couchbase-Meetup-Group/events/47350982/">Join and RSVP here.</a></p> 
]]>
</description>
      <dc:subject>Blogs, Damien Katz</dc:subject>
      <dc:date>2012-01-19T03:33:14+00:00</dc:date>
    </item>

    <item>
      <title>23 April 2012: Zurich Erlang Factory Lite</title>
      <link>http://www.planeterlang.org/en/planet/article/23_April_2012_Zurich_Erlang_Factory_Lite/</link>
      <guid>http://www.planeterlang.org/en/planet/article/23_April_2012_Zurich_Erlang_Factory_Lite/</guid>
      <author></author>
      <description><![CDATA[<div>
<div>
<p>23 Apr 2012</p>
</div>
</div>
<p><img style="float: left; margin-right:1em;" src="https://www.erlang-factory.com/upload/conferenceimage/Zurich2012/Zurichpic.jpg" alt="" /></p>
<p style="text-align: justify;">Together with the <a href="http://zhgeeks.org/">Zurich FLOSS and IT geeks</a> and hosted by <a href="http://www.ethz.ch/index_EN">ETH Zurich</a>,&nbsp;&nbsp;  &nbsp; we will be holding an Erlang Factory Lite on the 23 April 2012. The &nbsp;   Factory Lite will be a chance for you to learn, socialise and network &nbsp;   with some fantastic names.</p>
<p style="text-align: justify;">We are currently accepting talk  submissions. We welcome submissions from  developers, system designers,&nbsp; testers,&nbsp; community leaders, inventors,&nbsp; CTOs, evangelists, students,&nbsp; researchers  and entrepreneurs alike.&nbsp; Submit your talk <a href="https://www.erlang-factory.com/conference/Zurich2012/submit_talk">here</a>. <br /><br /> The Erlang Factory Lite is open to &nbsp;  everybody with any level of  Erlang experience from newbies to &nbsp;  experienced developers and is free  to attend.<br /> <br /> Why not come &nbsp; along and meet up with like-minded  developers and  architects and find &nbsp; out how more firms are using  Erlang/OTP to solve  previously intractable &nbsp; problems.</p>
<p style="text-align: center;"><strong><a href="https://www.erlang-factory.com/conference/Zurich2012/register">Book your place now!</a></strong></p>
<table border="0" align="center">
<tbody>
<tr>
<td style="padding: 2px 4px ! important; text-align: center; border: 1px dotted #aa1124; font-size: 13px; font-weight: bold; color: #aa1124;">ETH Zurich<br /></td>
<td style="padding: 2px 4px ! important; text-align: center; border: 1px dotted #aa1124; font-size: 13px; font-weight: bold; color: #aa1124;">Zurich FLOSS and IT geeks<br /></td>
</tr>
<tr>
<td style="width: 50%; vertical-align: top; padding: 2px 8px ! important; text-align: justify; border: 1px dotted #aa1124;">ETH  Zurich has come to symbolise excellent education, groundbreaking basic  research and applied results that are beneficial for society as a whole.<br /><br />Founded  in 1855, it today offers researchers an inspiring environment and  students a comprehensive education as one of the leading international  universities for technology and the natural sciences.<br /><br />ETH Zurich  has more than 17,000 students from approximately 80 countries, 3,800 of  whom are doctoral candidates. More than 400 professors teach and conduct  research in the areas of engineering, architecture, mathematics,&nbsp; natural sciences, system-oriented sciences, and management and social  sciences.<br /><br /></td>
<td style="width: 50%; vertical-align: top; padding: 2px 8px ! important; text-align: justify; border: 1px dotted #aa1124;">
<p style="text-align: justify; margin-top: 2px; margin-bottom: 2px;">The  Zurich FLOSS and IT geeks is a group of like-minded people with a  variety of geeky interests. These include: operating systems,&nbsp; cryptography and security, programming languages and  frameworks,&nbsp; messaging, newfangled data stores&#8230; anything that could  arouse an IT  geek, preferably free and open source!</p>
<p style="text-align: justify; margin-top: 2px; margin-bottom: 2px;">&nbsp;</p>
<p style="text-align: justify; margin-top: 2px; margin-bottom: 2px;">A wide range of events are always being organised, go and find one now!</p>
<p style="text-align: justify; margin-top: 2px; margin-bottom: 2px;">&nbsp;</p>
<p style="text-align: justify; margin-top: 2px; margin-bottom: 2px;">&nbsp;</p>
</td>
</tr>
<tr>
<td style="padding: 2px 4px ! important; text-align: center; border: 1px dotted #aa1124;"><a href="http://www.ethz.ch/index_EN">ethz.ch</a></td>
<td style="padding: 2px 4px ! important; text-align: center; border: 1px dotted #aa1124;"><a href="http://zhgeeks.org/">zhgeeks.org</a></td>
</tr>
</tbody>
</table> 
]]>
</description>
      <dc:subject>Companies, Erlang Solutions</dc:subject>
      <dc:date>2012-01-18T19:30:14+00:00</dc:date>
    </item>

    <item>
      <title>Recovering From a Computer Science Education</title>
      <link>http://www.planeterlang.org/en/planet/article/Recovering_From_a_Computer_Science_Education/</link>
      <guid>http://www.planeterlang.org/en/planet/article/Recovering_From_a_Computer_Science_Education/</guid>
      <author>James Hague</author>
      <description><![CDATA[<p>I was originally going to call this &#8220;Undoing the Damage of a Computer Science Education,&#8221; but that was too link-baity and too extreme. There&#8217;s real value in a computer science degree. For starters, you can easily get a good paying job. More importantly, you&#8217;ve gained the ability to make amazing and useful things. But there&#8217;s a downside, too, in that you can get so immersed in the technical and theoretical that you forget how wonderful it is to make amazing and useful things. At least that&#8217;s what happened to me, and it took a long time to recover.<br />
<br></br><br></br>This is short list of things that helped me and might help you too.<br />
<br></br><br></br><b>Stay out of technical forums unless it&#8217;s directly relevant to something you&#8217;re working on.</b> It&#8217;s far too easy to get wrapped up in discussions of the validity of functional programming or whether or not Scheme can be used to make commercial applications or how awful PHP is. The deeper you get into this, the more you lose touch.<br />
<br></br><br></br><b>Keep working on real projects related to your area of interest.</b> If you like designing games, write games. If you like photography, write a photo organizer or camera app. Don&#8217;t approach things wrong-way-around, thinking that &#8220;a photo organizer in Haskell&#8221; is more important than &#8220;a photo organizer which solves a particular problem with photo organizers.&#8221;<br />
<br></br><br></br><b>If you find yourself repeatedly putting down a technology, then take some time to actually learn and use it.</b> All the jokes and snide remarks aside, Perl is tremendously useful. Ditto for PHP and Java and C++. Who wins, the person who has been slamming Java online for ten years or the author of Minecraft who just used the language and made tens of millions of dollars?<br />
<br></br><br></br><b>Don&#8217;t become an advocate.</b> This is the flipside of the previous item. If Linux or Android or Scala are helpful with what you&#8217;re building, then great! That you&#8217;re relying on it is a demonstration of its usefulness. No need to insist that everyone else use it, too.<br />
<br></br><br></br><b>Have a hobby where you focus the end results and not the &#8220;how.&#8221;</b> Woodworkers can become tool collectors. <a href="http://prog21.dadgum.com/118.html">Photographers</a> can become spec comparison addicts. Forget all of that and concern yourself with what you&#8217;re making.<br />
<br></br><br></br><b>Do something artistic</b>. Write songs or short stories, sketch, learn to do pixel art. Most of these also have the benefit of much shorter turnaround times than any kind of software project.<br />
<br></br><br></br><b>Be widely read.</b> There are endless books about architecture, books by naturalists, both classic and popular modern novels, and most of them have absolutely nothing to do with computers or programming or science fiction.
</p> 
]]>
</description>
      <dc:subject>Blogs, Programming in the 21st Century</dc:subject>
      <dc:date>2012-01-15T07:00:00+00:00</dc:date>
    </item>

    <item>
      <title>12 January 2012: Roberto Aloi guest lecturer at The University of Catania (Sicily, Italy)</title>
      <link>http://www.planeterlang.org/en/planet/article/12_January_2012_Roberto_Aloi_guest_lecturer_at_The_University_of_Catania_Si/</link>
      <guid>http://www.planeterlang.org/en/planet/article/12_January_2012_Roberto_Aloi_guest_lecturer_at_The_University_of_Catania_Si/</guid>
      <author></author>
      <description><![CDATA[<p>Roberto Aloi, an experienced Systems Developer from our London Office, will give two guest lectures at the Computer and Telecommunication Engineering Department of the University of Catania. He is going to introduce the programming language Erlang, explain how Erlang/OTP provides the right built-in features to build large, scalable, fault-tolerant, distributed systems.</p>
<p>The talks, even though officially part of the &#8220;Distributed Systems Design&#8221; course, are open to all interested students. No prior knowledge of Erlang is required.&nbsp;</p>
<p><strong>Lecture One:</strong>&nbsp; Date: <span style="text-decoration: underline;">Tuesday 17th January 2012</span> Time: <span style="text-decoration: underline;">15:00-17:00</span><br /><strong>Location:</strong> <span style="text-decoration: underline;">Room D33</span>&nbsp;- Cittadella Universitaria Catania&nbsp; <br /><br /><strong>Lecture Two:</strong>&nbsp; Date: <span style="text-decoration: underline;">Thursday 19th January 2012</span>&nbsp;Time: <span style="text-decoration: underline;">15:00-18:00</span><br /><strong>Location:</strong> <span style="text-decoration: underline;">Room D31 </span>- Cittadella Universitaria Catania&nbsp; <br /><br />Erlang Solutions wishes to thank the <a style="color: #860404;" href="http://www.unict.it/">University of Catania</a>, which has a long tradition of using Erlang in its projects, for this opportunity. A special thanks goes to Professor Antonella Di Stefano and her collaborators, who made all this possible.</p> 
]]>
</description>
      <dc:subject>Companies, Erlang Solutions</dc:subject>
      <dc:date>2012-01-12T14:30:18+00:00</dc:date>
    </item>

    <item>
      <title>Why Couchbase?</title>
      <link>http://www.planeterlang.org/en/planet/article/Why_Couchbase/</link>
      <guid>http://www.planeterlang.org/en/planet/article/Why_Couchbase/</guid>
      <author>Damien Katz</author>
      <description><![CDATA[<p>So apparently my last entry ruffled some feathers, so maybe I should explain why I think Couchbase is the future?</p>

<p>Simple Fast Elastic.</p>

<p>That&#8217;s pretty much it. We make it very simple to get started, we are extremely fast (and getting faster), and we really are &#8220;web scale&#8221;, with the ability to add and remove machines from a cluster to rapidly scale your capacity to your workload.</p>

<p>The Membase product was very fast and scalable, but a bit too simple, with no reporting capability or cross-datacenter replication capability.</p>

<p>The CouchDB product has a lot of features, but is too slow, unable to keep up with high loads and inability scale-out on it&#8217;s own.</p>

<p>The combination of the 2 will hit a sweet spot to allow developers to quickly get their apps up and running, along with the reliability, speed and low cost that make running it in production cheap and worry free.</p>

<p>Our 2.0 product is coming soon, adding CouchDB style views and reporting with a nifty trick for extremely fast failover while maintaining full coherency with the underling distributed data storage (we are calling it our B-Superstar index). We&#8217;ll of course have lighting fast reads (same as Memcached) but also very fast durable writes. For 2kb docs, we are currently getting sustained random insert/updates rates of 25k writes/sec, fully durable, with compaction in background so it can go all day and all night. We&#8217;ve got some more write work coming soon which we are hoping will give us another performance boost too before 2.0. Stay tuned.</p>

<p>And so right now the focus is on the features and customers that pay, a thing that allow us to build a real sustainable business. And that&#8217;s REAL DAMN IMPORTANT. It&#8217;s not enough to build some cool technology, not enough to build a community of excited technologist. You need to cross the chasm and build a real business. A business that provides support, training, documentation and of course a reliable product. A business you can call up when you have difficultly upgrading from an old version, or are getting some weird error you&#8217;ve never seen before at 3am. A business you know will be around to support you for years to come.</p>

<p>And so while we focus on the features and customers that most quickly make us a viable business (and it&#8217;s growing fast), we are still looking to build the features and technology to expand our use cases and, get customers and developers excited. Future versions are planned to have full CouchDB compatible replication technology, with the ability to support all sorts of mobile and embedded databases, such as our new TouchDB projects for iOS and Android. So with Couchbase you can have fast, scalable database in the cloud that also supports the offline use of thousands, or millions of apps on devices that drop in and out of internet connectivity, and can sync when connected but still completely usable when disconnected.</p>

<p>That&#8217;s some cool shit. Simple Fast Elastic. And Reliable. And Mobile. That&#8217;s why Couchbase.</p> 
]]>
</description>
      <dc:subject>Blogs, Damien Katz</dc:subject>
      <dc:date>2012-01-11T04:36:59+00:00</dc:date>
    </item>

    <item>
      <title>New Column: Wriaki</title>
      <link>http://www.planeterlang.org/en/planet/article/New_Column_Wriaki/</link>
      <guid>http://www.planeterlang.org/en/planet/article/New_Column_Wriaki/</guid>
      <author>steve</author>
      <description><![CDATA[<p>For the &#8220;Functional Web&#8221; column in the <a rel="nofollow" target="_blank" href="http://www.computer.org/csdl/mags/ic/2012/01/index.html">Jan/Feb 2012 issue of Internet Computing</a>, I wrote about <a rel="nofollow" target="_blank" href="https://github.com/basho/wriaki">Wriaki</a>, an Erlang sample application my <a rel="nofollow" target="_blank" href="http://basho.com/">Basho</a> colleague <a rel="nofollow" target="_blank" href="http://beerriot.com/bryan.html">Bryan Fink</a> wrote that implements a wiki on top of <a rel="nofollow" target="_blank" href="http://wiki.basho.com/Webmachine.html">Webmachine</a> and <a rel="nofollow" target="_blank" href="http://basho.com/products/riak-overview/">Riak</a>. Wriaki is a nice, clean, and easy to understand example of how to write Webmachine applications. <a rel="nofollow">Here&#8217;s the PDF.</a></p> 
]]>
</description>
      <dc:subject>Blogs, Steve Vinoski</dc:subject>
      <dc:date>2012-01-10T19:36:04+00:00</dc:date>
    </item>

    <item>
      <title>06 January 2012: NoSQL Roadshow Copenhagen &#45; 2 March 2012</title>
      <link>http://www.planeterlang.org/en/planet/article/06_January_2012_NoSQL_Roadshow_Copenhagen_-_2_March_2012_/</link>
      <guid>http://www.planeterlang.org/en/planet/article/06_January_2012_NoSQL_Roadshow_Copenhagen_-_2_March_2012_/</guid>
      <author></author>
      <description><![CDATA[<p style="text-align: justify;">Are you&nbsp;frustrated&nbsp;by growing data requirements and interested in how non-relational databases could help?&nbsp;Curious&nbsp;about where and how NoSQL systems are being deployed?&nbsp;&nbsp;Want to build a&nbsp;&#8220;real&#8221;&nbsp;Highly Scalable System?&nbsp; Answered&nbsp;yes&nbsp;to any of these questions? Then the NoSQL Roadshow might be of interest to you.&nbsp;</p>
<p>The NoSQL Roadshow starts off with an overview of the changing landscape around data management &ndash; highlighted by concepts like Big Data and NoSQL databases. Attendees will learn how to &#8220;think&#8221; differently when it comes to designing highly scalable systems and hear from the experts who are designing and utilizing Riak, an opensource non-relational database.</p>
<p>For more information and registration click <a style="color: #860404;" href="http://nosqlroadshow.com/nosql-cph-2012/">here</a></p>
<div style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; margin: 8px;">
<div style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; margin: 8px;">
<p>&nbsp;</p>
</div>
</div> 
]]>
</description>
      <dc:subject>Companies, Erlang Solutions</dc:subject>
      <dc:date>2012-01-06T18:00:20+00:00</dc:date>
    </item>

    <item>
      <title>Follow&#45;up to &#8220;A Programming Idiom You&#8217;ve Never Heard Of&#8221;</title>
      <link>http://www.planeterlang.org/en/planet/article/Follow-up_to_A_Programming_Idiom_Youve_Never_Heard_Of/</link>
      <guid>http://www.planeterlang.org/en/planet/article/Follow-up_to_A_Programming_Idiom_Youve_Never_Heard_Of/</guid>
      <author>James Hague</author>
      <description><![CDATA[<p>Lots of mail, lots of online discussion about <a href="http://prog21.dadgum.com/121.html">A Programming Idiom You&#8217;ve Never Heard Of</a>, so I wanted to clarify a few things.<br />
<br></br><br></br>What I was trying to do was get across the unexpected strangeness of function inverses in a programming language. In that short definition of vector magnitude, there wasn&#8217;t a visible square root function. There was only an operator for squaring a value, and another operator that involved inverting a function.<br />
<br></br><br></br>How does the J interpreter manage to determine a function inverse at runtime? For many primitives, there&#8217;s an associated inverse. The inverse of add is subtract. The inverse of increment is decrement. For some primitives there isn&#8217;t a true, mathematical inverse, but a counterpart that&#8217;s often useful. That&#8217;s why the preferred term in J isn&#8217;t inverse, but <a href="http://dictionary.reference.com/browse/obverse">obverse</a>.<br />
<br></br><br></br>For user-defined functions, there&#8217;s an attempt at inversion (er, obversion) that works much of the time. A function that reverses a list then adds five to each element turns into a function that subtracts five from each element then reverses the list. For cases where the automated obverse doesn&#8217;t work, or where you want the obverse to have different behavior, you can associate a user-defined obverse with any verb (J lingo for function). You could define an <tt>open_file</tt> verb which opens a file and has an obverse that closes a file. Or in actual J:
</p><pre>open_file =: open :. close
</pre><p>Well, really, that should be:
</p><pre>open_file =: (1!:21) :. (1!:22)
</pre><p>But the former, without the explicit foreign function calls, gets the point across clearer, I think.<br />
<br></br><br></br>One common use of obverses and the &#8220;under&#8221; operator is for boxing and unboxing values. In J, a list contains values of the same type. There&#8217;s no mixing of integers and strings like Lisp or Python. Instead you can &#8220;box&#8221; a value, then have a list containing only boxed values. But there&#8217;s nothing you can do with a boxed value except unbox it, so it&#8217;s common to say &#8220;[some operation] under open box,&#8221; like &#8220;increment under open box.&#8221; That means unbox the value, increment it, then put it back in a box. Or in real, eyeball-melting J:
</p><pre>inc_box =: >: &amp;. >
</pre><p>The <tt>>:</tt> is increment. The right <tt>></tt> means open box. That&#8217;s the &#8220;under&#8221; operation in the middle.<br />
<br></br><br></br>Now it sounds like this &#8220;open box, do something, close box&#8221; sequence would translate beautifully to the &#8220;open file, read the contents, close the file&#8221; example I gave last time, but it doesn&#8217;t. The catch is that the open / read / close verbs aren&#8217;t manipulating a single input the way <tt>inc_box</tt> is. Opening a file returns a handle, which gets passed to <tt>read</tt>. But reading a file returns the <i>contents</i> of the file, which is not something that can be operated on by <tt>close</tt>. So this definition won&#8217;t work:
</p><pre>read_file =: read &amp;. open
</pre><p>If a structured data type like a dictionary was being passed around, then okay, but that&#8217;s not a pretty example like I hoped it would be.<br />
<br></br><br></br>Still, I encourage learning <a href="http://jsoftware.com">J</a>, if only to make every other language seem easy.
</p> 
]]>
</description>
      <dc:subject>Blogs, Programming in the 21st Century</dc:subject>
      <dc:date>2012-01-05T07:00:00+00:00</dc:date>
    </item>

    <item>
      <title>The Future of CouchDB</title>
      <link>http://www.planeterlang.org/en/planet/article/The_Future_of_CouchDB/</link>
      <guid>http://www.planeterlang.org/en/planet/article/The_Future_of_CouchDB/</guid>
      <author>Damien Katz</author>
      <description><![CDATA[<p>What&#8217;s the future of CouchDB? It&#8217;s Couchbase.</p>

<p>Huh? So what about <a href="http://couchdb.apache.org">Apache CouchDB</a>? Well, that&#8217;s a great project. I founded it, coded the earliest versions almost completely myself, I&#8217;ve spent a huge amount of blood, sweat and tears on it. I&#8217;m very proud of it and the impact it&#8217;s had. And now I, and the Couchbase team, are mostly moving on. It&#8217;s not that we think CouchDB isn&#8217;t awesome. It&#8217;s that we are creating the successor to it: Couchbase Server. A product and project with similar capabilities and goals, but more faster, more scalable, more customer and developer focused. And definitely not part of Apache.</p>

<p>With Apache CouchDB, much of the focus has been around creating a consensus based, developer community that helps govern and move the project forward. Apache has done, and is doing a good job of that. But for us, it&#8217;s no longer enough. CouchDB was something I created because I thought an easy to use, peer based, replicating document store was something the world would find useful. And it proved a lot of the ideas were possible and useful and it&#8217;s been successful beyond my wildest ambitions. But if I had it all to do again, I&#8217;d do many things different.</p>

<p>If it sounds like I&#8217;m saying Apache was a mistake, I&#8217;m not. Apache was a big part in the success of CouchDB, without it CouchDB would not have enjoyed the early success it did. But in my opinion it&#8217;s reached a point where the consensus based approach has limited the competitiveness of the project. It&#8217;s not personal, it&#8217;s business.</p>

<p>And now, as it turns out, I have a chance to do it all again, without the pain of starting from scratch. Building on the previous Apache CouchDB and Membase projects, throwing out what didn&#8217;t work, and strengthening what does, and advancing great technologies to make something that is developer friendly, high performance, designed for mission critical deployment and mobile integration, and can move faster and more responsively to users and customers needs than a community based project.</p>

<p>Apache CouchDB, as project and community, is in fine shape. And many of us at Couchbase are still contributing back to it. But the future, the one I&#8217;m pushing forward on, is Couchbase Server.</p>

<p>And what is my part in building Couchbase? Right now I&#8217;m focusing on getting Couchbase 2.0 ready for serious production use. I&#8217;m once again an engineer and coder, back in the trenches, designing and writing code, reviewing code and designs, helping other engineers and solving tough problems. And I&#8217;m dead serious about making it the easiest, fastest and most reliable NoSQL database. Easy for developers to use, easy to deploy, reliable on single machines or large clusters, and fast as hell. We are building something you can put your mission critical, customer facing business data on, and not feel like you&#8217;re running a dirty hack.</p>

<p>Soon, to work more closely with the team (and get rid of my nasty Oakland commute), I&#8217;ll be relocating my family to the Mountain View area. Shit just got real!</p>

<p>And I&#8217;m really excited about the work we&#8217;ve got in the pipeline. We are moving more and more of the core database in C/C++, while still using many of the concurrency and reliability design principles we&#8217;ve proven with the Erlang codebase. And Erlang is still going to be part of the product as well, particularly with cluster management, but most of the performance sensitive portions will be moving to over C code. Erlang is still a great language, but when you need top performance and low level control, C is hard to beat.</p>

<p>Anyway, there so much to talk about, to much for one blog post. One of my New Years resolutions is to blog more, and I&#8217;ve got a ton of interesting things to talk about. The trials of tribulations of building a startup and an engineering culture. What&#8217;s wrong (and right) with Erlang. Bringing forth UnQL. TouchDB for Mobile. And yes, we&#8217;ll still interoperate with Apache CouchDB and Memcached. But the future is Couchbase.</p>

<p>Ride with me.</p> 
]]>
</description>
      <dc:subject>Blogs, Damien Katz</dc:subject>
      <dc:date>2012-01-05T05:14:04+00:00</dc:date>
    </item>

    <item>
      <title>New Screencast: Sinan – Building Enterprise Erlang Applications</title>
      <link>http://www.planeterlang.org/en/planet/article/New_Screencast_Sinan_Building_Enterprise_Erlang_Applications/</link>
      <guid>http://www.planeterlang.org/en/planet/article/New_Screencast_Sinan_Building_Enterprise_Erlang_Applications/</guid>
      <author>Tristan Sloughter</author>
      <description><![CDATA[<p>A
</p> 
]]>
</description>
      <dc:subject>Blogs, Erlware</dc:subject>
      <dc:date>2012-01-04T21:40:38+00:00</dc:date>
    </item>

    <item>
      <title>A Programming Idiom You&#8217;ve Never Heard Of</title>
      <link>http://www.planeterlang.org/en/planet/article/A_Programming_Idiom_Youve_Never_Heard_Of/</link>
      <guid>http://www.planeterlang.org/en/planet/article/A_Programming_Idiom_Youve_Never_Heard_Of/</guid>
      <author>James Hague</author>
      <description><![CDATA[<p>Here are some sequences of events:
</p><blockquote><p>Take the rake out of the shed, use it to pile up the leaves in the backyard, then put the rake back in the shed.<br />
<br></br><br></br>Fly to Seattle, see the sights, then fly home.<br />
<br></br><br></br>Put the key in the door, open it, then take the key out of the door.<br />
<br></br><br></br>Wake-up your phone, check the time, then put it back to sleep.
</p></blockquote><p>See the pattern? You do something, then do something else, then you undo the first thing. Or more accurately, the last step is the inverse of the first. Once you&#8217;re aware of this pattern, you&#8217;ll see it everywhere. Pick up the cup, take a sip of coffee, put the cup down. And it&#8217;s all over the place in code, too:
</p><blockquote><p>Open a file, read the contents, close the file.<br />
<br></br><br></br>Allocate a block of memory, use it for something, free it.<br />
<br></br><br></br>Load the contents of a memory address into a register, modify it, store it back in memory.
</p></blockquote><p>While this is easy to explain and give examples of, it&#8217;s not simple to implement. All we want is an operation that looks like <tt>idiom(Function1, Function2)</tt>, so we could write the &#8220;open a file&#8230;&#8221; example above as <tt>idiom(Open, Read)</tt>. The catch is that there needs to be a programmatic way to determine that the inverse of &#8220;open&#8221; is &#8220;close.&#8221; Is there a programming languages where functions have inverses?<br />
<br></br><br></br>Surprisingly, yes: <a href="http://jsoftware.com">J</a>. And this idiom I keep talking about is even a built-in function in J, called <i>under</i>. In English, and not J&#8217;s terse syntax, the open file example is stated as &#8220;read under open.&#8221;<br />
<br></br><br></br>One non-obvious use of &#8220;under&#8221; in J is to compute the magnitude of a vector. Magnitude is an easy algorithm: square each component, sum them up, then take the square root of the result. Hmmm&#8230;the third step is the inverse of the first. Sum under square. Or in actual J code:
</p><pre>mag =: +/&amp;.:*:
</pre><p><tt>+/</tt> is &#8220;sum.&#8221; The ampersand, period, colon sequence is &#8220;under.&#8221; And <tt>*:</tt> is &#8220;square.&#8221;<br />
<br></br><br></br>(If you liked this, you might enjoy <a href="http://prog21.dadgum.com/33.html">Understanding What It&#8217;s Like to Program in Forth</a>.)
</p> 
]]>
</description>
      <dc:subject>Blogs, Programming in the 21st Century</dc:subject>
      <dc:date>2012-01-03T07:00:00+00:00</dc:date>
    </item>

    <item>
      <title>2011 Retrospective</title>
      <link>http://www.planeterlang.org/en/planet/article/2011_Retrospective/</link>
      <guid>http://www.planeterlang.org/en/planet/article/2011_Retrospective/</guid>
      <author>James Hague</author>
      <description><![CDATA[<p>I was going to end this blog one year ago.<br />
<br></br><br></br>Prog21 was entirely a personal outlet for the more technical ideas kicking around in my head, and it had run its course. Just before Christmas 2010, I sat down and wrote a final &#8220;thanks for reading,&#8221; essay. I&#8217;ve still got it on my MacBook. But instead of posting it, I dashed off <a href="http://prog21.dadgum.com/87.html">Write Code Like You Just Learned How to Program</a>, and the response made me realize my initial plan may have been too hasty. <br />
<br></br><br></br>In 2011 I posted more articles than in any previous year&#8212;thirty-two, including this one. I finally gave the site a much needed visual makeover. And I&#8217;m still wrestling with how to balance the more hardcore software engineering topics that I initially wrote about with the softer, less techy issues that I&#8217;ve gotten more interested in.<br />
<br></br><br></br>Have a great 2012, everyone!<br />
<br></br><br></br>Popular articles from 2011:<br />
<br></br><br></br><a href="http://prog21.dadgum.com/93.html">Don&#8217;t Distract New Programmers with OOP</a><br></br><br />
<a href="http://prog21.dadgum.com/94.html">If You&#8217;re Not Gonna Use It, Why Are You Building It?</a><br></br><br />
<a href="http://prog21.dadgum.com/95.html">Caught-Up with 20 Years of UI Criticism</a><br></br><br />
<a href="http://prog21.dadgum.com/101.html">Living in the Era of Infinite Computing Power</a><br></br><br />
<a href="http://prog21.dadgum.com/102.html">The Nostalgia Trap</a><br></br><br />
<a href="http://prog21.dadgum.com/107.html">It&#8217;s Like That Because It Has Always Been Like That</a><br></br><br />
<a href="http://prog21.dadgum.com/114.html">Papers from the Lost Culture of Array Languages</a><br></br><br />
<a href="http://prog21.dadgum.com/116.html">Things That Turbo Pascal is Smaller Than</a><br />
<br></br><br></br>Others from 2011 that I personally like:<br />
<br></br><br></br><a href="http://prog21.dadgum.com/89.html">Accidental Innovation</a> (three parts).<br></br><br />
<a href="http://prog21.dadgum.com/97.html">Follow the Vibrancy</a><br></br><br />
<a href="http://prog21.dadgum.com/98.html">Impressed by Slow Code</a><br></br><br />
<a href="http://prog21.dadgum.com/99.html">Constantly Create</a><br></br><br />
<a href="http://prog21.dadgum.com/104.html">8-Bit Scheme: A Revisionist History</a><br></br><br />
<a href="http://prog21.dadgum.com/111.html">Greetings from the Bottom of the Benchmarks</a><br></br><br />
<a href="http://prog21.dadgum.com/117.html">Adventures in Unfiltered Global Publishing</a><br></br><br />
<a href="http://prog21.dadgum.com/118.html">Photography as a Non-Technical Hobby</a><br />
<br></br><br></br>(There&#8217;s also a <a href="http://prog21.dadgum.com/88.html">retrospective</a> covering 2007-2010.)
</p> 
]]>
</description>
      <dc:subject>Blogs, Programming in the 21st Century</dc:subject>
      <dc:date>2011-12-31T07:00:00+00:00</dc:date>
    </item>

    <item>
      <title>User Experience Intrusions in iOS 5</title>
      <link>http://www.planeterlang.org/en/planet/article/User_Experience_Intrusions_in_iOS_5/</link>
      <guid>http://www.planeterlang.org/en/planet/article/User_Experience_Intrusions_in_iOS_5/</guid>
      <author>James Hague</author>
      <description><![CDATA[<p>The iPhone has obsoleted a number of physical gadgets. A little four-track recorder that I use as a notebook for song ideas. A stopwatch. A graphing calculator. Those ten dollar LCD games from Toys &#8216;R Us. And it works because an iPhone app takes over the device, giving the impression that it&#8217;s a custom piece of hardware designed for that specific purpose.<br />
<br></br><br></br>But it&#8217;s only an illusion. I can be in the middle of recording a track, and I get a call. That puts the recorder to sleep and switches over to the phone interface. Or I can be playing a game and the &#8220;Battery is below 20%&#8221; alert pops up at an inopportune moment. These are interesting edge cases, where the reality that the iPhone is a more complex system&#8212;and not a dedicated game player or recorder&#8212;bleeds into the user experience. These intrusions are driven by things outside of my control. I didn&#8217;t <i>ask</i> to be called at that moment; it just happened. I understand that. I get it.<br />
<br></br><br></br>What if there was something I could do <i>within</i> an app that broke the illusion? Suppose that tapping the upper-left corner of the screen ten times in row caused an app to quit (it doesn&#8217;t; this is just an example). Now the rule that an app can do whatever it wants, interface-wise, has been violated. You could argue that tapping the corner of the screen ten times is so unlikely that it doesn&#8217;t matter, but that&#8217;s a blind assumption. Think of a game based around tapping, for example. Or a drum machine.<br />
<br></br><br></br>As it turns out, two such violations were introduced in iOS 5.<br />
<br></br><br></br>On the iPad, there are a number of system-wide gestures, such as swiping left or right with four fingers to switch between apps. Four-finger swipes? That&#8217;s convoluted, but imagine a virtual mixing console with horizontal sliders. Quickly move four of them at once&#8230;and you switch apps. Application designers have to work around these, making sure that legitimate input methods don&#8217;t mimic the system-level gestures.<br />
<br></br><br></br>The worst offender is this: swipe down from the top of the screen to reveal the Notification Center (a window containing calendar appointments, the weather, etc.). A single-finger vertical motion is hardly unusual, and many apps expect such input. The games Flight Control and Fruit Ninja are two prime examples. Unintentionally pulling down the Notification Center during normal gameplay is common. A centered vertical swipe is natural in any paint program, too. Do app designers need build around allowing such controls? Apparently, yes.<br />
<br></br><br></br>There&#8217;s an easy operating system-level solution to the Notification Center problem. Require the gesture to start on the system bar at the top of the screen, where the network status and battery indicator are displayed. Allowing the system bar in an app is already an intrusion, but one opted into by the developer. Some apps turn off the system bar, including many games, and that&#8217;s fine. It&#8217;s an indication that the Notification Center isn&#8217;t available.<br />
<br></br><br></br>(If you liked this, you might enjoy <a href="http://prog21.dadgum.com/95.html">Caught-Up with 20 Years of UI Criticism</a>.)
</p> 
]]>
</description>
      <dc:subject>Blogs, Programming in the 21st Century</dc:subject>
      <dc:date>2011-12-30T07:00:00+00:00</dc:date>
    </item>

	
    </channel>
</rss>
