<html xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg">
<div>
</div>




<head>
  <link rel="stylesheet" type="text/css" href="conv876_files/posterity.css"/>
  <link rel="icon" type="image/ico" href="http://localhost:8080/chrome/favicon.ico"/>
  <link rel="shortcut icon" type="image/ico" href="http://localhost:8080/chrome/favicon.ico"/>
  <script type="text/javascript" src="conv876_files/jquery.js"/>
  <script type="text/javascript" src="conv876_files/jquery.html"/>
  <script type="text/javascript" src="conv876_files/posterity.js"/>
  <title>[Xmonad] [HUMOR] xmonad useless without programming skills ? - Posterity</title>
  <script type="text/javascript">
  $(document).ready(function() {
    $('.head-toggle').click(function() {
      $(this).parents('.msg-head').toggleClass('expanded')
    });
    $('.msg .msg-header').click(function() {
      $(this).siblings('.msg-body').slideToggle(200);
      $(this).parent().toggleClass('expanded');
      return false;
    });
    collapseQuotes();
    $('#vis path').click(function() {
      var target = $('#' + this.getAttribute('rel'));
      if (target.length) {
        $(target).addClass('expanded');
        var targetOffset = target.offset().top;
        $('html,body').animate({scrollTop: targetOffset}, 1000);
        return false;
      }
    });
  });
  </script>
</head>
<body>
  <div id="page">
    <div id="navbar">
      <div id="logout">
        Logged in as visbrero (<a href="http://localhost:8080/logout">logout</a>)
      </div>
    </div>
    <div id="main">
     <form action="" method="post" id="mainform">
    <input type="hidden" name="do_action" id="do_action"/>
  </form><svg:svg class="vis" height="100" id="vis" width="640"><svg:rect fill="white" height="100" width="640" x="0" y="0"/><svg:g transform="translate(5, 5)"><svg:path d="M5,81 C5,78.88 5.84,76.84 7.34,75.34 C8.84,73.84 10.88,73 13,73 C15.12,73 17.16,73.84 18.66,75.34 C20.16,76.84 21,78.88 21,81 L19,81 C19,79.41 18.37,77.88 17.24,76.76 C16.12,75.63 14.59,75 13,75 C11.41,75 9.88,75.63 8.76,76.76 C7.63,77.88 7,79.41 7,81 L13,81" fill="#28cc28" fill-opacity="0.40000" stroke-width="1.000"/><svg:path d="M5,81 C5,77.02 6.58,73.21 9.39,70.39 C12.21,67.58 16.02,66 20,66 C23.98,66 27.79,67.58 30.61,70.39 C33.42,73.21 35,77.02 35,81 L33,81 C33,77.55 31.63,74.24 29.19,71.81 C26.76,69.37 23.45,68 20,68 C16.55,68 13.24,69.37 10.81,71.81 C8.37,74.24 7,77.55 7,81 L20,81" fill="#28cc28" fill-opacity="0.40000" stroke-width="1.000"/><svg:path d="M33,81 C33,78.88 33.84,76.84 35.34,75.34 C36.84,73.84 38.88,73 41,73 C43.12,73 45.16,73.84 46.66,75.34 C48.16,76.84 49,78.88 49,81 L47,81 C47,79.41 46.37,77.88 45.24,76.76 C44.12,75.63 42.59,75 41,75 C39.41,75 37.88,75.63 36.76,76.76 C35.63,77.88 35,79.41 35,81 L41,81" fill="#28cc28" fill-opacity="0.40000" stroke-width="1.000"/><svg:path d="M5,81 C5,73.31 8.06,65.93 13.49,60.49 C18.93,55.06 26.31,52 34,52 C41.69,52 49.07,55.06 54.51,60.49 C59.94,65.93 63,73.31 63,81 L61,81 C61,73.84 58.15,66.97 53.09,61.91 C48.03,56.85 41.16,54 34,54 C26.84,54 19.97,56.85 14.91,61.91 C9.85,66.97 7,73.84 7,81 L34,81" fill="#28cc28" fill-opacity="0.40000" stroke-width="1.000"/><svg:path d="M5,81 C5,71.46 8.8,62.29 15.54,55.54 C22.29,48.8 31.46,45 41,45 C50.54,45 59.71,48.8 66.46,55.54 C73.2,62.29 77,71.46 77,81 L75,81 C75,71.99 71.42,63.33 65.04,56.96 C58.67,50.58 50.01,47 41,47 C31.99,47 23.33,50.58 16.96,56.96 C10.58,63.33 7,71.99 7,81 L41,81" fill="#28cc28" fill-opacity="0.40000" stroke-width="1.000"/><svg:path d="M75,81 C75,78.88 75.84,76.84 77.34,75.34 C78.84,73.84 80.88,73 83,73 C85.12,73 87.16,73.84 88.66,75.34 C90.16,76.84 91,78.88 91,81 L89,81 C89,79.41 88.37,77.88 87.24,76.76 C86.12,75.63 84.59,75 83,75 C81.41,75 79.88,75.63 78.76,76.76 C77.63,77.88 77,79.41 77,81 L83,81" fill="#28cc28" fill-opacity="0.40000" stroke-width="1.000"/><svg:path d="M75,81 C75,77.02 76.58,73.21 79.39,70.39 C82.21,67.58 86.02,66 90,66 C93.98,66 97.79,67.58 100.61,70.39 C103.42,73.21 105,77.02 105,81 L103,81 C103,77.55 101.63,74.24 99.19,71.81 C96.76,69.37 93.45,68 90,68 C86.55,68 83.24,69.37 80.81,71.81 C78.37,74.24 77,77.55 77,81 L90,81" fill="#28cc28" fill-opacity="0.40000" stroke-width="1.000"/><svg:path d="M103,81 C103,78.88 103.84,76.84 105.34,75.34 C106.84,73.84 108.88,73 111,73 C113.12,73 115.16,73.84 116.66,75.34 C118.16,76.84 119,78.88 119,81 L117,81 C117,79.41 116.37,77.88 115.24,76.76 C114.12,75.63 112.59,75 111,75 C109.41,75 107.88,75.63 106.76,76.76 C105.63,77.88 105,79.41 105,81 L111,81" fill="#28cc28" fill-opacity="0.40000" stroke-width="1.000"/><svg:path d="M117,81 C117,78.88 117.84,76.84 119.34,75.34 C120.84,73.84 122.88,73 125,73 C127.12,73 129.16,73.84 130.66,75.34 C132.16,76.84 133,78.88 133,81 L131,81 C131,79.41 130.37,77.88 129.24,76.76 C128.12,75.63 126.59,75 125,75 C123.41,75 121.88,75.63 120.76,76.76 C119.63,77.88 119,79.41 119,81 L125,81" fill="#28cc28" fill-opacity="0.40000" stroke-width="1.000"/><svg:path d="M131,81 C131,78.88 131.84,76.84 133.34,75.34 C134.84,73.84 136.88,73 139,73 C141.12,73 143.16,73.84 144.66,75.34 C146.16,76.84 147,78.88 147,81 L145,81 C145,79.41 144.37,77.88 143.24,76.76 C142.12,75.63 140.59,75 139,75 C137.41,75 135.88,75.63 134.76,76.76 C133.63,77.88 133,79.41 133,81 L139,81" fill="#28cc28" fill-opacity="0.40000" stroke-width="1.000"/><svg:path d="M117,81 C117,75.17 119.32,69.57 123.44,65.44 C127.57,61.32 133.17,59 139,59 C144.83,59 150.43,61.32 154.56,65.44 C158.68,69.57 161,75.17 161,81 L159,81 C159,75.7 156.89,70.61 153.14,66.86 C149.39,63.11 144.3,61 139,61 C133.7,61 128.61,63.11 124.86,66.86 C121.11,70.61 119,75.7 119,81 L139,81" fill="#28cc28" fill-opacity="0.40000" stroke-width="1.000"/><svg:path d="M159,81 C159,78.88 159.84,76.84 161.34,75.34 C162.84,73.84 164.88,73 167,73 C169.12,73 171.16,73.84 172.66,75.34 C174.16,76.84 175,78.88 175,81 L173,81 C173,79.41 172.37,77.88 171.24,76.76 C170.12,75.63 168.59,75 167,75 C165.41,75 163.88,75.63 162.76,76.76 C161.63,77.88 161,79.41 161,81 L167,81" fill="#28cc28" fill-opacity="0.40000" stroke-width="1.000"/><svg:path d="M159,81 C159,77.02 160.58,73.21 163.39,70.39 C166.21,67.58 170.02,66 174,66 C177.98,66 181.79,67.58 184.61,70.39 C187.42,73.21 189,77.02 189,81 L187,81 C187,77.55 185.63,74.24 183.19,71.81 C180.76,69.37 177.45,68 174,68 C170.55,68 167.24,69.37 164.81,71.81 C162.37,74.24 161,77.55 161,81 L174,81" fill="#28cc28" fill-opacity="0.40000" stroke-width="1.000"/><svg:path d="M187,81 C187,78.88 187.84,76.84 189.34,75.34 C190.84,73.84 192.88,73 195,73 C197.12,73 199.16,73.84 200.66,75.34 C202.16,76.84 203,78.88 203,81 L201,81 C201,79.41 200.37,77.88 199.24,76.76 C198.12,75.63 196.59,75 195,75 C193.41,75 191.88,75.63 190.76,76.76 C189.63,77.88 189,79.41 189,81 L195,81" fill="#28cc28" fill-opacity="0.40000" stroke-width="1.000"/><svg:path d="M201,81 C201,78.88 201.84,76.84 203.34,75.34 C204.84,73.84 206.88,73 209,73 C211.12,73 213.16,73.84 214.66,75.34 C216.16,76.84 217,78.88 217,81 L215,81 C215,79.41 214.37,77.88 213.24,76.76 C212.12,75.63 210.59,75 209,75 C207.41,75 205.88,75.63 204.76,76.76 C203.63,77.88 203,79.41 203,81 L209,81" fill="#28cc28" fill-opacity="0.40000" stroke-width="1.000"/><svg:path d="M215,81 C215,78.88 215.84,76.84 217.34,75.34 C218.84,73.84 220.88,73 223,73 C225.12,73 227.16,73.84 228.66,75.34 C230.16,76.84 231,78.88 231,81 L229,81 C229,79.41 228.37,77.88 227.24,76.76 C226.12,75.63 224.59,75 223,75 C221.41,75 219.88,75.63 218.76,76.76 C217.63,77.88 217,79.41 217,81 L223,81" fill="#28cc28" fill-opacity="0.40000" stroke-width="1.000"/><svg:path d="M187,81 C187,73.31 190.06,65.93 195.49,60.49 C200.93,55.06 208.31,52 216,52 C223.69,52 231.07,55.06 236.51,60.49 C241.94,65.93 245,73.31 245,81 L243,81 C243,73.84 240.15,66.97 235.09,61.91 C230.03,56.85 223.16,54 216,54 C208.84,54 201.97,56.85 196.91,61.91 C191.85,66.97 189,73.84 189,81 L216,81" fill="#28cc28" fill-opacity="0.40000" stroke-width="1.000"/><svg:path d="M173,81 C173,69.6 177.53,58.66 185.59,50.59 C193.66,42.53 204.6,38 216,38 C227.4,38 238.34,42.53 246.41,50.59 C254.47,58.66 259,69.6 259,81 L257,81 C257,70.13 252.68,59.69 244.99,52.01 C237.31,44.32 226.87,40 216,40 C205.13,40 194.69,44.32 187.01,52.01 C179.32,59.69 175,70.13 175,81 L216,81" fill="#28cc28" fill-opacity="0.40000" stroke-width="1.000"/><svg:path d="M201,81 C201,71.46 204.8,62.29 211.54,55.54 C218.29,48.8 227.46,45 237,45 C246.54,45 255.71,48.8 262.46,55.54 C269.2,62.29 273,71.46 273,81 L271,81 C271,71.99 267.42,63.33 261.04,56.96 C254.67,50.58 246.01,47 237,47 C227.99,47 219.33,50.58 212.96,56.96 C206.58,63.33 203,71.99 203,81 L237,81" fill="#28cc28" fill-opacity="0.40000" stroke-width="1.000"/><svg:path d="M243,81 C243,75.17 245.32,69.57 249.44,65.44 C253.57,61.32 259.17,59 265,59 C270.83,59 276.43,61.32 280.56,65.44 C284.68,69.57 287,75.17 287,81 L285,81 C285,75.7 282.89,70.61 279.14,66.86 C275.39,63.11 270.3,61 265,61 C259.7,61 254.61,63.11 250.86,66.86 C247.11,70.61 245,75.7 245,81 L265,81" fill="#28cc28" fill-opacity="0.40000" stroke-width="1.000"/><svg:path d="M201,81 C201,67.74 206.27,55.02 215.64,45.64 C225.02,36.27 237.74,31 251,31 C264.26,31 276.98,36.27 286.36,45.64 C295.73,55.02 301,67.74 301,81 L299,81 C299,68.27 293.94,56.06 284.94,47.06 C275.94,38.06 263.73,33 251,33 C238.27,33 226.06,38.06 217.06,47.06 C208.06,56.06 203,68.27 203,81 L251,81" fill="#cc2828" fill-opacity="0.40000" stroke-width="1.000"/><svg:path d="M187,81 C187,64.03 193.75,47.74 205.75,35.75 C217.74,23.75 234.03,17 251,17 C267.97,17 284.26,23.75 296.25,35.75 C308.25,47.74 315,64.03 315,81 L313,81 C313,64.56 306.46,48.78 294.84,37.16 C283.22,25.54 267.44,19 251,19 C234.56,19 218.78,25.54 207.16,37.16 C195.54,48.78 189,64.56 189,81 L251,81" fill="#28cc28" fill-opacity="0.40000" stroke-width="1.000"/><svg:path d="M313,81 C313,78.88 313.84,76.84 315.34,75.34 C316.84,73.84 318.88,73 321,73 C323.12,73 325.16,73.84 326.66,75.34 C328.16,76.84 329,78.88 329,81 L327,81 C327,79.41 326.37,77.88 325.24,76.76 C324.12,75.63 322.59,75 321,75 C319.41,75 317.88,75.63 316.76,76.76 C315.63,77.88 315,79.41 315,81 L321,81" fill="#28cc28" fill-opacity="0.40000" stroke-width="1.000"/><svg:g transform="translate(6, 81)"><svg:path d="M5,0 C5,1.33 4.47,2.6 3.54,3.54 C2.6,4.47 1.33,5 0,5 C-1.33,5 -2.6,4.47 -3.54,3.54 C-4.47,2.6 -5,1.33 -5,0 C-5,-1.33 -4.47,-2.6 -3.54,-3.54 C-2.6,-4.47 -1.33,-5 -0,-5 C1.33,-5 2.6,-4.47 3.54,-3.54 C4.47,-2.6 5,-1.33 5,-0" fill="#a3b3cc" rel="msg1479" stroke="#515966" stroke-width="1.000" title="Xavier Maillard"/></svg:g><svg:g transform="translate(20, 81)"><svg:path d="M5,0 C5,1.33 4.47,2.6 3.54,3.54 C2.6,4.47 1.33,5 0,5 C-1.33,5 -2.6,4.47 -3.54,3.54 C-4.47,2.6 -5,1.33 -5,0 C-5,-1.33 -4.47,-2.6 -3.54,-3.54 C-2.6,-4.47 -1.33,-5 -0,-5 C1.33,-5 2.6,-4.47 3.54,-3.54 C4.47,-2.6 5,-1.33 5,-0" fill="#a3ccb3" rel="msg1480" stroke="#516659" stroke-width="1.000" title="Kai Grossjohann"/></svg:g><svg:g transform="translate(34, 81)"><svg:path d="M5,0 C5,1.33 4.47,2.6 3.54,3.54 C2.6,4.47 1.33,5 0,5 C-1.33,5 -2.6,4.47 -3.54,3.54 C-4.47,2.6 -5,1.33 -5,0 C-5,-1.33 -4.47,-2.6 -3.54,-3.54 C-2.6,-4.47 -1.33,-5 -0,-5 C1.33,-5 2.6,-4.47 3.54,-3.54 C4.47,-2.6 5,-1.33 5,-0" fill="#a3cccc" rel="msg1483" stroke="#516666" stroke-width="1.000" title="Andrea Rossato"/></svg:g><svg:g transform="translate(48, 81)"><svg:path d="M5,0 C5,1.33 4.47,2.6 3.54,3.54 C2.6,4.47 1.33,5 0,5 C-1.33,5 -2.6,4.47 -3.54,3.54 C-4.47,2.6 -5,1.33 -5,0 C-5,-1.33 -4.47,-2.6 -3.54,-3.54 C-2.6,-4.47 -1.33,-5 -0,-5 C1.33,-5 2.6,-4.47 3.54,-3.54 C4.47,-2.6 5,-1.33 5,-0" fill="#abcca3" rel="msg1484" stroke="#556651" stroke-width="1.000" title="David Roundy"/></svg:g><svg:g transform="translate(62, 81)"><svg:path d="M5,0 C5,1.33 4.47,2.6 3.54,3.54 C2.6,4.47 1.33,5 0,5 C-1.33,5 -2.6,4.47 -3.54,3.54 C-4.47,2.6 -5,1.33 -5,0 C-5,-1.33 -4.47,-2.6 -3.54,-3.54 C-2.6,-4.47 -1.33,-5 -0,-5 C1.33,-5 2.6,-4.47 3.54,-3.54 C4.47,-2.6 5,-1.33 5,-0" fill="#c3cca3" rel="msg1487" stroke="#616651" stroke-width="1.000" title="Don Stewart"/></svg:g><svg:g transform="translate(76, 81)"><svg:path d="M5,0 C5,1.33 4.47,2.6 3.54,3.54 C2.6,4.47 1.33,5 0,5 C-1.33,5 -2.6,4.47 -3.54,3.54 C-4.47,2.6 -5,1.33 -5,0 C-5,-1.33 -4.47,-2.6 -3.54,-3.54 C-2.6,-4.47 -1.33,-5 -0,-5 C1.33,-5 2.6,-4.47 3.54,-3.54 C4.47,-2.6 5,-1.33 5,-0" fill="#c3a3cc" rel="msg1490" stroke="#615166" stroke-width="1.000" title="Spencer Janssen"/></svg:g><svg:g transform="translate(90, 81)"><svg:path d="M5,0 C5,1.33 4.47,2.6 3.54,3.54 C2.6,4.47 1.33,5 0,5 C-1.33,5 -2.6,4.47 -3.54,3.54 C-4.47,2.6 -5,1.33 -5,0 C-5,-1.33 -4.47,-2.6 -3.54,-3.54 C-2.6,-4.47 -1.33,-5 -0,-5 C1.33,-5 2.6,-4.47 3.54,-3.54 C4.47,-2.6 5,-1.33 5,-0" fill="#c3cca3" rel="msg1491" stroke="#616651" stroke-width="1.000" title="Don Stewart"/></svg:g><svg:g transform="translate(104, 81)"><svg:path d="M5,0 C5,1.33 4.47,2.6 3.54,3.54 C2.6,4.47 1.33,5 0,5 C-1.33,5 -2.6,4.47 -3.54,3.54 C-4.47,2.6 -5,1.33 -5,0 C-5,-1.33 -4.47,-2.6 -3.54,-3.54 C-2.6,-4.47 -1.33,-5 -0,-5 C1.33,-5 2.6,-4.47 3.54,-3.54 C4.47,-2.6 5,-1.33 5,-0" fill="#cca3a3" rel="msg1504" stroke="#665151" stroke-width="1.000" title="Alex Tarkovsky"/></svg:g><svg:g transform="translate(118, 81)"><svg:path d="M5,0 C5,1.33 4.47,2.6 3.54,3.54 C2.6,4.47 1.33,5 0,5 C-1.33,5 -2.6,4.47 -3.54,3.54 C-4.47,2.6 -5,1.33 -5,0 C-5,-1.33 -4.47,-2.6 -3.54,-3.54 C-2.6,-4.47 -1.33,-5 -0,-5 C1.33,-5 2.6,-4.47 3.54,-3.54 C4.47,-2.6 5,-1.33 5,-0" fill="#c3cca3" rel="msg1505" stroke="#616651" stroke-width="1.000" title="Don Stewart"/></svg:g><svg:g transform="translate(132, 81)"><svg:path d="M5,0 C5,1.33 4.47,2.6 3.54,3.54 C2.6,4.47 1.33,5 0,5 C-1.33,5 -2.6,4.47 -3.54,3.54 C-4.47,2.6 -5,1.33 -5,0 C-5,-1.33 -4.47,-2.6 -3.54,-3.54 C-2.6,-4.47 -1.33,-5 -0,-5 C1.33,-5 2.6,-4.47 3.54,-3.54 C4.47,-2.6 5,-1.33 5,-0" fill="#cca3a3" rel="msg1507" stroke="#665151" stroke-width="1.000" title="Alex Tarkovsky"/></svg:g><svg:g transform="translate(146, 81)"><svg:path d="M5,0 C5,1.33 4.47,2.6 3.54,3.54 C2.6,4.47 1.33,5 0,5 C-1.33,5 -2.6,4.47 -3.54,3.54 C-4.47,2.6 -5,1.33 -5,0 C-5,-1.33 -4.47,-2.6 -3.54,-3.54 C-2.6,-4.47 -1.33,-5 -0,-5 C1.33,-5 2.6,-4.47 3.54,-3.54 C4.47,-2.6 5,-1.33 5,-0" fill="#c3cca3" rel="msg1508" stroke="#616651" stroke-width="1.000" title="Don Stewart"/></svg:g><svg:g transform="translate(160, 81)"><svg:path d="M5,0 C5,1.33 4.47,2.6 3.54,3.54 C2.6,4.47 1.33,5 0,5 C-1.33,5 -2.6,4.47 -3.54,3.54 C-4.47,2.6 -5,1.33 -5,0 C-5,-1.33 -4.47,-2.6 -3.54,-3.54 C-2.6,-4.47 -1.33,-5 -0,-5 C1.33,-5 2.6,-4.47 3.54,-3.54 C4.47,-2.6 5,-1.33 5,-0" fill="#aba3cc" rel="msg1509" stroke="#555166" stroke-width="1.000" title="Michael F. Lamb"/></svg:g><svg:g transform="translate(174, 81)"><svg:path d="M5,0 C5,1.33 4.47,2.6 3.54,3.54 C2.6,4.47 1.33,5 0,5 C-1.33,5 -2.6,4.47 -3.54,3.54 C-4.47,2.6 -5,1.33 -5,0 C-5,-1.33 -4.47,-2.6 -3.54,-3.54 C-2.6,-4.47 -1.33,-5 -0,-5 C1.33,-5 2.6,-4.47 3.54,-3.54 C4.47,-2.6 5,-1.33 5,-0" fill="#c3cca3" rel="msg1510" stroke="#616651" stroke-width="1.000" title="Don Stewart"/></svg:g><svg:g transform="translate(188, 81)"><svg:path d="M5,0 C5,1.33 4.47,2.6 3.54,3.54 C2.6,4.47 1.33,5 0,5 C-1.33,5 -2.6,4.47 -3.54,3.54 C-4.47,2.6 -5,1.33 -5,0 C-5,-1.33 -4.47,-2.6 -3.54,-3.54 C-2.6,-4.47 -1.33,-5 -0,-5 C1.33,-5 2.6,-4.47 3.54,-3.54 C4.47,-2.6 5,-1.33 5,-0" fill="#cca3a3" rel="msg1514" stroke="#665151" stroke-width="1.000" title="Alex Tarkovsky"/></svg:g><svg:g transform="translate(202, 81)"><svg:path d="M5,0 C5,1.33 4.47,2.6 3.54,3.54 C2.6,4.47 1.33,5 0,5 C-1.33,5 -2.6,4.47 -3.54,3.54 C-4.47,2.6 -5,1.33 -5,0 C-5,-1.33 -4.47,-2.6 -3.54,-3.54 C-2.6,-4.47 -1.33,-5 -0,-5 C1.33,-5 2.6,-4.47 3.54,-3.54 C4.47,-2.6 5,-1.33 5,-0" fill="#c3cca3" rel="msg1515" stroke="#616651" stroke-width="1.000" title="Don Stewart"/></svg:g><svg:g transform="translate(216, 81)"><svg:path d="M5,0 C5,1.33 4.47,2.6 3.54,3.54 C2.6,4.47 1.33,5 0,5 C-1.33,5 -2.6,4.47 -3.54,3.54 C-4.47,2.6 -5,1.33 -5,0 C-5,-1.33 -4.47,-2.6 -3.54,-3.54 C-2.6,-4.47 -1.33,-5 -0,-5 C1.33,-5 2.6,-4.47 3.54,-3.54 C4.47,-2.6 5,-1.33 5,-0" fill="#cca3a3" rel="msg1519" stroke="#665151" stroke-width="1.000" title="Alex Tarkovsky"/></svg:g><svg:g transform="translate(230, 81)"><svg:path d="M5,0 C5,1.33 4.47,2.6 3.54,3.54 C2.6,4.47 1.33,5 0,5 C-1.33,5 -2.6,4.47 -3.54,3.54 C-4.47,2.6 -5,1.33 -5,0 C-5,-1.33 -4.47,-2.6 -3.54,-3.54 C-2.6,-4.47 -1.33,-5 -0,-5 C1.33,-5 2.6,-4.47 3.54,-3.54 C4.47,-2.6 5,-1.33 5,-0" fill="#c3a3cc" rel="msg1520" stroke="#615166" stroke-width="1.000" title="Spencer Janssen"/></svg:g><svg:g transform="translate(244, 81)"><svg:path d="M5,0 C5,1.33 4.47,2.6 3.54,3.54 C2.6,4.47 1.33,5 0,5 C-1.33,5 -2.6,4.47 -3.54,3.54 C-4.47,2.6 -5,1.33 -5,0 C-5,-1.33 -4.47,-2.6 -3.54,-3.54 C-2.6,-4.47 -1.33,-5 -0,-5 C1.33,-5 2.6,-4.47 3.54,-3.54 C4.47,-2.6 5,-1.33 5,-0" fill="#c3a3cc" rel="msg1521" stroke="#615166" stroke-width="1.000" title="Spencer Janssen"/></svg:g><svg:g transform="translate(258, 81)"><svg:path d="M5,0 C5,1.33 4.47,2.6 3.54,3.54 C2.6,4.47 1.33,5 0,5 C-1.33,5 -2.6,4.47 -3.54,3.54 C-4.47,2.6 -5,1.33 -5,0 C-5,-1.33 -4.47,-2.6 -3.54,-3.54 C-2.6,-4.47 -1.33,-5 -0,-5 C1.33,-5 2.6,-4.47 3.54,-3.54 C4.47,-2.6 5,-1.33 5,-0" fill="#a3cccc" rel="msg1528" stroke="#516666" stroke-width="1.000" title="Andrea Rossato"/></svg:g><svg:g transform="translate(272, 81)"><svg:path d="M5,0 C5,1.33 4.47,2.6 3.54,3.54 C2.6,4.47 1.33,5 0,5 C-1.33,5 -2.6,4.47 -3.54,3.54 C-4.47,2.6 -5,1.33 -5,0 C-5,-1.33 -4.47,-2.6 -3.54,-3.54 C-2.6,-4.47 -1.33,-5 -0,-5 C1.33,-5 2.6,-4.47 3.54,-3.54 C4.47,-2.6 5,-1.33 5,-0" fill="#ccbba3" rel="msg1531" stroke="#665d51" stroke-width="1.000" title="Alexander Tsamutali"/></svg:g><svg:g transform="translate(286, 81)"><svg:path d="M5,0 C5,1.33 4.47,2.6 3.54,3.54 C2.6,4.47 1.33,5 0,5 C-1.33,5 -2.6,4.47 -3.54,3.54 C-4.47,2.6 -5,1.33 -5,0 C-5,-1.33 -4.47,-2.6 -3.54,-3.54 C-2.6,-4.47 -1.33,-5 -0,-5 C1.33,-5 2.6,-4.47 3.54,-3.54 C4.47,-2.6 5,-1.33 5,-0" fill="#abcca3" rel="msg1541" stroke="#556651" stroke-width="1.000" title="David Roundy"/></svg:g><svg:g transform="translate(300, 81)"><svg:path d="M5,0 C5,1.33 4.47,2.6 3.54,3.54 C2.6,4.47 1.33,5 0,5 C-1.33,5 -2.6,4.47 -3.54,3.54 C-4.47,2.6 -5,1.33 -5,0 C-5,-1.33 -4.47,-2.6 -3.54,-3.54 C-2.6,-4.47 -1.33,-5 -0,-5 C1.33,-5 2.6,-4.47 3.54,-3.54 C4.47,-2.6 5,-1.33 5,-0" fill="#cca3bb" rel="msg1545" stroke="#66515d" stroke-width="1.000" title="Tim Docker"/></svg:g><svg:g transform="translate(314, 81)"><svg:path d="M5,0 C5,1.33 4.47,2.6 3.54,3.54 C2.6,4.47 1.33,5 0,5 C-1.33,5 -2.6,4.47 -3.54,3.54 C-4.47,2.6 -5,1.33 -5,0 C-5,-1.33 -4.47,-2.6 -3.54,-3.54 C-2.6,-4.47 -1.33,-5 -0,-5 C1.33,-5 2.6,-4.47 3.54,-3.54 C4.47,-2.6 5,-1.33 5,-0" fill="#aba3cc" rel="msg1572" stroke="#555166" stroke-width="1.000" title="Michael F. Lamb"/></svg:g><svg:g transform="translate(328, 81)"><svg:path d="M5,0 C5,1.33 4.47,2.6 3.54,3.54 C2.6,4.47 1.33,5 0,5 C-1.33,5 -2.6,4.47 -3.54,3.54 C-4.47,2.6 -5,1.33 -5,0 C-5,-1.33 -4.47,-2.6 -3.54,-3.54 C-2.6,-4.47 -1.33,-5 -0,-5 C1.33,-5 2.6,-4.47 3.54,-3.54 C4.47,-2.6 5,-1.33 5,-0" fill="#abcca3" rel="msg1574" stroke="#556651" stroke-width="1.000" title="David Roundy"/></svg:g></svg:g></svg:svg><div id="header">
    <div class="subject">[Xmonad] [HUMOR] xmonad useless wit...
     
    <button onclick="submitAction('archive')">Archive</button>
    <button onclick="submitAction('spam')">Mark as spam</button>
    <button onclick="submitAction('delete')">Delete</button>
    <select onchange="submitAction(this.options[this.selectedIndex].value)">
      <option>Add/Remove Tag</option>
      <optgroup label="Add Tag">
        <option value="tag_todo">todo</option><option value="tag_xmonad">xmonad</option>
      </optgroup>
      <optgroup label="Remove Tag">
        <option value="untag_todo">todo</option><option value="untag_xmonad">xmonad</option>
      </optgroup>
    </select>
    </div>
  </div><div class="msg" id="msg1479">
      <div class="msg-header color1">
        <a name="mh1479"/><span class="msg-num">1</span> Xavier Maillard &lt;maillaxa@gmail.com&gt;
          <button onclick="location.href='/msgs/1479;reply_form'">Reply</button>
          <button onclick="location.href='/msgs/1479;reply_all_form'">Reply All</button>
      </div>
      <div class="msg-body">
        <table class="msg-head">
          <tr>
            <th>Date</th>
            <td>Sep 14, 2007 6:56:34 AM
                <a class="head-toggle" href="javascript:void">
                    (more headers)</a>
            </td>
          </tr>
          <tr><th>Subject</th><td colspan="2">[Xmonad] [HUMOR] xmonad useless without programming skills ?</td></tr>
          <tr><th>From</th><td colspan="2">Xavier Maillard &lt;maillaxa@gmail.com&gt;</td></tr>
          <tr><th>To</th><td colspan="2">xmonad@haskell.org</td></tr>
        </table>
        <div>
            <div class="txt-part">Hi,<br/><br/>Each time I try to update xmonad (from darcs), my Config.hs is broken. This is,<br/>for me, the major drawback of xmonad. I do not understand any a line of Haskell<br/>and thus I am lost after each upgrade.<br/><br/>Although I love xmonad, it is useless since I can't benefit of any upgrade<br/>without boring you about my new Config.hs's problems...<br/><br/>Am I alone in this situation or not ? How haskell rookies like do ?<br/><br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></div>
        </div>
      </div>
    </div><div class="msg" id="msg1480">
      <div class="msg-header color2">
        <a name="mh1480"/><span class="msg-num">2</span> Kai Grossjohann &lt;kai@emptydomain.de&gt;
          <button onclick="location.href='/msgs/1480;reply_form'">Reply</button>
          <button onclick="location.href='/msgs/1480;reply_all_form'">Reply All</button>
      </div>
      <div class="msg-body">
        <table class="msg-head">
          <tr>
            <th>Date</th>
            <td>Sep 14, 2007 7:14:47 AM
                <a class="head-toggle" href="javascript:void">
                    (more headers)</a>
            </td>
          </tr>
          <tr><th>Subject</th><td colspan="2">Re: [Xmonad] [HUMOR] xmonad useless without programming skills ?</td></tr>
          <tr><th>From</th><td colspan="2">Kai Grossjohann &lt;kai@emptydomain.de&gt;</td></tr>
          <tr><th>To</th><td colspan="2">Xavier Maillard &lt;maillaxa@gmail.com&gt;</td></tr>
          <tr><th>CC</th><td colspan="2">xmonad@haskell.org</td></tr>
        </table>
        <div>
            <div class="txt-part">On Fri, Sep 14, 2007 at 10:56:34AM +0000, Xavier Maillard wrote:<br/><br/><blockquote style="">Each time I try to update xmonad (from darcs), my Config.hs is broken. This is,<br/>for me, the major drawback of xmonad. I do not understand any a line of Haskell<br/>and thus I am lost after each upgrade.<br/></blockquote><br/>I don't know any Haskell either, but Config.hs seems easy enough to<br/>maintain.  Perhaps that is because I haven't made drastic changes<br/>compared to the standard config?<br/><br/>One idea is to always use the standard Config.hs, then apply changes as<br/>necessary.  I don't do that, but if I get problems, then I might.  This<br/>requires you to know how you want your xmonad to be different from the<br/>standard one, so that you can apply all your changes to a fresh<br/>Config.hs.<br/><br/>Kai<br/><br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></div>
        </div>
      </div>
    </div><div class="msg" id="msg1483">
      <div class="msg-header color3">
        <a name="mh1483"/><span class="msg-num">3</span> Andrea Rossato &lt;mailing_list@istitutocolli.org&gt;
          <button onclick="location.href='/msgs/1483;reply_form'">Reply</button>
          <button onclick="location.href='/msgs/1483;reply_all_form'">Reply All</button>
      </div>
      <div class="msg-body">
        <table class="msg-head">
          <tr>
            <th>Date</th>
            <td>Sep 14, 2007 8:17:18 AM
                <a class="head-toggle" href="javascript:void">
                    (more headers)</a>
            </td>
          </tr>
          <tr><th>Subject</th><td colspan="2">Re: [Xmonad] [HUMOR] xmonad useless without programming skills ?</td></tr>
          <tr><th>From</th><td colspan="2">Andrea Rossato &lt;mailing_list@istitutocolli.org&gt;</td></tr>
          <tr><th>Reply-To</th><td colspan="2">mailing_list@istitutocolli.org</td></tr>
          <tr><th>To</th><td colspan="2">xmonad@haskell.org</td></tr>
        </table>
        <div>
            <div class="txt-part">On Fri, Sep 14, 2007 at 10:56:34AM +0000, Xavier Maillard wrote:<br/><blockquote style="">Hi,<br/><br/>Each time I try to update xmonad (from darcs), my Config.hs is broken. This is,<br/>for me, the major drawback of xmonad. I do not understand any a line of Haskell<br/>and thus I am lost after each upgrade.<br/></blockquote><br/>Well, there were some changes to Config.hs but the core developers<br/>seem quite committed in keeping the configuration file as stable as<br/>possible, so hopefully this should not be a major issue in the future.<br/><br/><blockquote style="">Although I love xmonad, it is useless since I can't benefit of any upgrade<br/>without boring you about my new Config.hs's problems...<br/></blockquote><br/>Probably there can be safer ways of modifying Config.hs. I actually<br/>think that a XMonad tutorial is really something we need. I'm thinking<br/>about giving directions to Haskell new comers on how to configure<br/>XMonad. The guided tour is great for introducing to commands and usage<br/>patterns, but probably teaching to non-haskellers the meaning of each<br/>configuration option, and the possibilities of a Haskell configuration<br/>file, could be a powerful incentive to start studying it - a<br/>programming language capable of turning a lawyer into a xmonad hacker.<br/><br/>But there is all this buzz about people writing tutorials on topics<br/>related to monads... If they just called it XArrow and used a Kleisli<br/>type ...<br/>;-)<br/><br/>Andrea<br/><br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></div>
        </div>
      </div>
    </div><div class="msg" id="msg1484">
      <div class="msg-header color4">
        <a name="mh1484"/><span class="msg-num">4</span> David Roundy &lt;droundy@darcs.net&gt;
          <button onclick="location.href='/msgs/1484;reply_form'">Reply</button>
          <button onclick="location.href='/msgs/1484;reply_all_form'">Reply All</button>
      </div>
      <div class="msg-body">
        <table class="msg-head">
          <tr>
            <th>Date</th>
            <td>Sep 14, 2007 10:00:24 AM
                <a class="head-toggle" href="javascript:void">
                    (more headers)</a>
            </td>
          </tr>
          <tr><th>Subject</th><td colspan="2">Re: [Xmonad] [HUMOR] xmonad useless without programming skills ?</td></tr>
          <tr><th>From</th><td colspan="2">David Roundy &lt;droundy@darcs.net&gt;</td></tr>
          <tr><th>To</th><td colspan="2">xmonad@haskell.org</td></tr>
        </table>
        <div>
            <div class="txt-part">On Fri, Sep 14, 2007 at 02:17:18PM +0200, Andrea Rossato wrote:<br/><blockquote style="">On Fri, Sep 14, 2007 at 10:56:34AM +0000, Xavier Maillard wrote:<br/><blockquote>Hi,<br/><br/>Each time I try to update xmonad (from darcs), my Config.hs is broken. This is,<br/>for me, the major drawback of xmonad. I do not understand any a line of Haskell<br/>and thus I am lost after each upgrade.<br/></blockquote><br/>Well, there were some changes to Config.hs but the core developers<br/>seem quite committed in keeping the configuration file as stable as<br/>possible, so hopefully this should not be a major issue in the future.<br/></blockquote><br/>But xmonad is also under rapid development, and has a long way to go (in my<br/>opinion--keep in mind I'm not a core developer).  I'm sure once xmonad 1.0<br/>is out, the config format will remain stable (apart from a hypothetical<br/>development branch), but for the forseeable future, I can certainly forsee<br/>changes to Config.hs, as we improve it--which is really a good thing for<br/>Haskell newbies!<br/>--<br/>David Roundy<br/>Department of Physics<br/>Oregon State University<br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></div>
        </div>
      </div>
    </div><div class="msg" id="msg1487">
      <div class="msg-header color5">
        <a name="mh1487"/><span class="msg-num">5</span> Don Stewart &lt;dons@galois.com&gt;
          <button onclick="location.href='/msgs/1487;reply_form'">Reply</button>
          <button onclick="location.href='/msgs/1487;reply_all_form'">Reply All</button>
      </div>
      <div class="msg-body">
        <table class="msg-head">
          <tr>
            <th>Date</th>
            <td>Sep 14, 2007 11:41:25 AM
                <a class="head-toggle" href="javascript:void">
                    (more headers)</a>
            </td>
          </tr>
          <tr><th>Subject</th><td colspan="2">Re: [Xmonad] [HUMOR] xmonad useless without programming skills ?</td></tr>
          <tr><th>From</th><td colspan="2">Don Stewart &lt;dons@galois.com&gt;</td></tr>
          <tr><th>To</th><td colspan="2">Xavier Maillard &lt;maillaxa@gmail.com&gt;</td></tr>
          <tr><th>CC</th><td colspan="2">xmonad@haskell.org</td></tr>
        </table>
        <div>
            <div class="txt-part">maillaxa:<br/><blockquote style="">Hi,<br/><br/>Each time I try to update xmonad (from darcs), my Config.hs is broken. This is,<br/>for me, the major drawback of xmonad. I do not understand any a line of Haskell<br/>and thus I am lost after each upgrade.<br/></blockquote><br/>You can ensure better stability by following just the stable branch.<br/><br/>Also, using vimdiff (or some other diff tool) to compare your Config.hs<br/>against the default, should help with any merge.<br/><br/>-- Don<br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></div>
        </div>
      </div>
    </div><div class="msg" id="msg1490">
      <div class="msg-header">
        <a name="mh1490"/><span class="msg-num">6</span> Spencer Janssen &lt;sjanssen@cse.unl.edu&gt;
          <button onclick="location.href='/msgs/1490;reply_form'">Reply</button>
          <button onclick="location.href='/msgs/1490;reply_all_form'">Reply All</button>
      </div>
      <div class="msg-body">
        <table class="msg-head">
          <tr>
            <th>Date</th>
            <td>Sep 14, 2007 12:24:27 PM
                <a class="head-toggle" href="javascript:void">
                    (more headers)</a>
            </td>
          </tr>
          <tr><th>Subject</th><td colspan="2">Re: [Xmonad] [HUMOR] xmonad useless without programming skills ?</td></tr>
          <tr><th>From</th><td colspan="2">Spencer Janssen &lt;sjanssen@cse.unl.edu&gt;</td></tr>
          <tr><th>To</th><td colspan="2">xmonad@haskell.org</td></tr>
        </table>
        <div>
            <div class="txt-part">On Friday 14 September 2007 05:56:34 Xavier Maillard wrote:<br/><blockquote style="">Hi,<br/><br/>Each time I try to update xmonad (from darcs), my Config.hs is broken. This<br/>is, for me, the major drawback of xmonad. I do not understand any a line of<br/>Haskell and thus I am lost after each upgrade.<br/><br/>Although I love xmonad, it is useless since I can't benefit of any upgrade<br/>without boring you about my new Config.hs's problems...<br/><br/>Am I alone in this situation or not ? How haskell rookies like do ?<br/><br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></blockquote><br/>Config.hs has been called our Haskell trojan horse -- perhaps it is time to<br/>learn Haskell? ;)<br/><br/>I think there are some steps you can take to alleviate your problem.  First,<br/>you can upgrade less often.  I think running the stable 0.3 release is a good<br/>idea -- it is robust and has nearly all of the features of the current<br/>development version.  If you stick to stable releases you shouldn't have to<br/>update your Config.hs more than once a month.<br/><br/>Next, I think judicious use of a nice diff/merge tool will help.  I'd use<br/>'vimdiff xmonad-0.2/Config.hs xmonad-0.3/Config.hs', where the first is an old<br/>version with all your customizations, and the second is a pristine Config for<br/>the new version.  Gradually port your customizations from left to right, and<br/>compile frequently to catch mistakes early.<br/><br/>Finally, if you're having trouble with a contrib module, check the usage info<br/>at the top of that module.  Every module should have a working Config example<br/>(please report a bug if it does not!).<br/><br/><br/>Cheers,<br/>Spencer Janssen<br/><br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></div>
        </div>
      </div>
    </div><div class="msg" id="msg1491">
      <div class="msg-header color5">
        <a name="mh1491"/><span class="msg-num">7</span> Don Stewart &lt;dons@galois.com&gt;
          <button onclick="location.href='/msgs/1491;reply_form'">Reply</button>
          <button onclick="location.href='/msgs/1491;reply_all_form'">Reply All</button>
      </div>
      <div class="msg-body">
        <table class="msg-head">
          <tr>
            <th>Date</th>
            <td>Sep 14, 2007 1:09:55 PM
                <a class="head-toggle" href="javascript:void">
                    (more headers)</a>
            </td>
          </tr>
          <tr><th>Subject</th><td colspan="2">Re: [Xmonad] [HUMOR] xmonad useless without programming skills ?</td></tr>
          <tr><th>From</th><td colspan="2">Don Stewart &lt;dons@galois.com&gt;</td></tr>
          <tr><th>To</th><td colspan="2">Spencer Janssen &lt;sjanssen@cse.unl.edu&gt;</td></tr>
          <tr><th>CC</th><td colspan="2">xmonad@haskell.org</td></tr>
        </table>
        <div>
            <div class="txt-part">sjanssen:<br/><blockquote style="display: none;">On Friday 14 September 2007 05:56:34 Xavier Maillard wrote:<br/><blockquote>Hi,<br/><br/>Each time I try to update xmonad (from darcs), my Config.hs is broken. This<br/>is, for me, the major drawback of xmonad. I do not understand any a line of<br/>Haskell and thus I am lost after each upgrade.<br/><br/>Although I love xmonad, it is useless since I can't benefit of any upgrade<br/>without boring you about my new Config.hs's problems...<br/><br/>Am I alone in this situation or not ? How haskell rookies like do ?<br/><br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></blockquote><br/>Config.hs has been called our Haskell trojan horse -- perhaps it is time to<br/>learn Haskell? ;)<br/><br/>I think there are some steps you can take to alleviate your problem.  First,<br/>you can upgrade less often.  I think running the stable 0.3 release is a good<br/>idea -- it is robust and has nearly all of the features of the current<br/>development version.  If you stick to stable releases you shouldn't have to<br/>update your Config.hs more than once a month.<br/><br/>Next, I think judicious use of a nice diff/merge tool will help.  I'd use<br/>'vimdiff xmonad-0.2/Config.hs xmonad-0.3/Config.hs', where the first is an old<br/>version with all your customizations, and the second is a pristine Config for<br/>the new version.  Gradually port your customizations from left to right, and<br/>compile frequently to catch mistakes early.<br/><br/>Finally, if you're having trouble with a contrib module, check the usage info<br/>at the top of that module.  Every module should have a working Config example<br/>(please report a bug if it does not!).<br/></blockquote><br/>Should we add an FAQ on this, for how to manage Config.hs ?<br/><br/>Examples include:<br/>    * run the stable brance<br/>    * diff with vimdiff or meld (another visual diff tool)<br/>    * record your changes locally in darcs<br/><br/>-- Don<br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></div>
        </div>
      </div>
    </div><div class="msg" id="msg1504">
      <div class="msg-header">
        <a name="mh1504"/><span class="msg-num">8</span> Alex Tarkovsky &lt;alextarkovsky@gmail.com&gt;
          <button onclick="location.href='/msgs/1504;reply_form'">Reply</button>
          <button onclick="location.href='/msgs/1504;reply_all_form'">Reply All</button>
      </div>
      <div class="msg-body">
        <table class="msg-head">
          <tr>
            <th>Date</th>
            <td>Sep 14, 2007 3:31:05 PM
                <a class="head-toggle" href="javascript:void">
                    (more headers)</a>
            </td>
          </tr>
          <tr><th>Subject</th><td colspan="2">Re: [Xmonad] [HUMOR] xmonad useless without programming skills ?</td></tr>
          <tr><th>From</th><td colspan="2">Alex Tarkovsky &lt;alextarkovsky@gmail.com&gt;</td></tr>
          <tr><th>To</th><td colspan="2">xmonad@haskell.org</td></tr>
        </table>
        <div>
            <div class="txt-part">Spencer Janssen wrote:<br/><blockquote style="">Config.hs has been called our Haskell trojan horse -- perhaps it is time to<br/>learn Haskell? ;)<br/></blockquote><br/>This is also an unspoken assumption in many of the replies to the OP,<br/>and there's an important point there which everyone seems to be brushing<br/>aside: Users who have absolutely no interest in programming or learning<br/>how to program (the majority of computer users -- and yes, even of Linux<br/>users) are going to be put off by xmonad and move on to some other<br/>window manager that's easier to configure. That's regrettable because I<br/>believe xmonad could benefit more than just programmers.<br/><br/>Xmonad should be explicitly advertised as a "window manager you need to<br/>learn minimal Haskell to configure" unless a conventional configuration<br/>scheme is planned. Otherwise it's just wasting the time of users who<br/>would have chosen some other window manager had they known ahead of time<br/>what they were getting into. Frustrating such users on the off chance<br/>that one or two may decide to join the ranks of Haskellers is an unfair<br/>trade-off IMO.<br/><br/>--<br/>Alex Tarkovsky<br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></div>
        </div>
      </div>
    </div><div class="msg" id="msg1505">
      <div class="msg-header color5">
        <a name="mh1505"/><span class="msg-num">9</span> Don Stewart &lt;dons@galois.com&gt;
          <button onclick="location.href='/msgs/1505;reply_form'">Reply</button>
          <button onclick="location.href='/msgs/1505;reply_all_form'">Reply All</button>
      </div>
      <div class="msg-body">
        <table class="msg-head">
          <tr>
            <th>Date</th>
            <td>Sep 14, 2007 4:46:38 PM
                <a class="head-toggle" href="javascript:void">
                    (more headers)</a>
            </td>
          </tr>
          <tr><th>Subject</th><td colspan="2">Re: [Xmonad] [HUMOR] xmonad useless without programming skills ?</td></tr>
          <tr><th>From</th><td colspan="2">Don Stewart &lt;dons@galois.com&gt;</td></tr>
          <tr><th>To</th><td colspan="2">Alex Tarkovsky &lt;alextarkovsky@gmail.com&gt;</td></tr>
          <tr><th>CC</th><td colspan="2">xmonad@haskell.org</td></tr>
        </table>
        <div>
            <div class="txt-part">alextarkovsky:<br/><blockquote style="">Spencer Janssen wrote:<br/><blockquote>Config.hs has been called our Haskell trojan horse -- perhaps it is time to<br/>learn Haskell? ;)<br/></blockquote><br/>This is also an unspoken assumption in many of the replies to the OP,<br/>and there's an important point there which everyone seems to be brushing<br/>aside: Users who have absolutely no interest in programming or learning<br/>how to program (the majority of computer users -- and yes, even of Linux<br/>users) are going to be put off by xmonad and move on to some other<br/>window manager that's easier to configure. That's regrettable because I<br/>believe xmonad could benefit more than just programmers.<br/></blockquote><br/>How many non-programmers are using tiling window managers in X11 though?<br/><br/><blockquote style="">Xmonad should be explicitly advertised as a "window manager you need to<br/>learn minimal Haskell to configure" unless a conventional configuration<br/>scheme is planned. Otherwise it's just wasting the time of users who<br/>would have chosen some other window manager had they known ahead of time<br/>what they were getting into. Frustrating such users on the off chance<br/>that one or two may decide to join the ranks of Haskellers is an unfair<br/>trade-off IMO.<br/></blockquote><br/>We use Haskell as the configuration language for expressivity only --<br/>leading to the amazing explosion of extensions.<br/><br/>Similar window managers make their own choices:<br/><br/>    ion   -- you need to learn lua<br/>    dwm   -- you need to learn C<br/>    wmii  -- you need to write shell (or ruby)<br/>    emacs -- you need to learn lisp<br/><br/>Simple configuration of xmonad requires no Haskell skills, and we've<br/>had very very few complaints about config files not type checking, so<br/>all in all, I'm not terribly convinced the use of Haskell has been<br/>problematic.<br/><br/>What would the alternatives look like? Some ad hoc 1st (or 0th) order,<br/>configuration language like .muttrc or something nasty like VimScript?<br/><br/>-- Don<br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></div>
        </div>
      </div>
    </div><div class="msg" id="msg1507">
      <div class="msg-header">
        <a name="mh1507"/><span class="msg-num">10</span> Alex Tarkovsky &lt;alextarkovsky@gmail.com&gt;
          <button onclick="location.href='/msgs/1507;reply_form'">Reply</button>
          <button onclick="location.href='/msgs/1507;reply_all_form'">Reply All</button>
      </div>
      <div class="msg-body">
        <table class="msg-head">
          <tr>
            <th>Date</th>
            <td>Sep 14, 2007 5:36:23 PM
                <a class="head-toggle" href="javascript:void">
                    (more headers)</a>
            </td>
          </tr>
          <tr><th>Subject</th><td colspan="2">Re: [Xmonad] [HUMOR] xmonad useless without programming skills ?</td></tr>
          <tr><th>From</th><td colspan="2">Alex Tarkovsky &lt;alextarkovsky@gmail.com&gt;</td></tr>
          <tr><th>To</th><td colspan="2">xmonad@haskell.org</td></tr>
        </table>
        <div>
            <div class="txt-part">Don Stewart wrote:<br/><blockquote style="">How many non-programmers are using tiling window managers in X11 though?<br/></blockquote><br/>Why should a tiling window manager preclude use by non-programmers?<br/><br/>Given that xmonad (and other window managers like it) allows you to use<br/>a mouse, the UI part of xmonad's learning curve is still gentle enough<br/>to appeal to a more general audience. Also, users with disabilities may<br/>be attracted to xmonad's truly first-class keyboard navigation support,<br/>something which Gnome and KDE don't offer. I can also envision novel<br/>uses of xmonad in setups for media center PCs, multimedia presentations,<br/>and media production workstations. These domains aren't exclusive to<br/>programmers.<br/><br/>At the very least I hope you can agree that one needn't be a programmer<br/>to loathe traditional desktop environments. ;)<br/><br/><blockquote style="">We use Haskell as the configuration language for expressivity only --<br/>leading to the amazing explosion of extensions.<br/></blockquote><br/>Extensions written by users who happen to be programmers. ;)<br/><br/><blockquote style="">What would the alternatives look like? Some ad hoc 1st (or 0th) order,<br/>configuration language like .muttrc or something nasty like VimScript?<br/></blockquote><br/>Ideally a GUI-based configuration utility could be offered -- xmonad is<br/>an X11 application after all. If designed well, it could capture the<br/>flexibility of Config.hs. As for text file based configuration, the<br/>traditional UNIX option=value style is probably too limiting, so I<br/>concede that Config.hs should probably stick around for the more<br/>intrepid users.<br/><br/>--<br/>Alex Tarkovsky<br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></div>
        </div>
      </div>
    </div><div class="msg" id="msg1508">
      <div class="msg-header color5">
        <a name="mh1508"/><span class="msg-num">11</span> Don Stewart &lt;dons@galois.com&gt;
          <button onclick="location.href='/msgs/1508;reply_form'">Reply</button>
          <button onclick="location.href='/msgs/1508;reply_all_form'">Reply All</button>
      </div>
      <div class="msg-body">
        <table class="msg-head">
          <tr>
            <th>Date</th>
            <td>Sep 14, 2007 5:39:52 PM
                <a class="head-toggle" href="javascript:void">
                    (more headers)</a>
            </td>
          </tr>
          <tr><th>Subject</th><td colspan="2">Re: [Xmonad] [HUMOR] xmonad useless without programming skills ?</td></tr>
          <tr><th>From</th><td colspan="2">Don Stewart &lt;dons@galois.com&gt;</td></tr>
          <tr><th>To</th><td colspan="2">Alex Tarkovsky &lt;alextarkovsky@gmail.com&gt;</td></tr>
          <tr><th>CC</th><td colspan="2">xmonad@haskell.org</td></tr>
        </table>
        <div>
            <div class="txt-part"><blockquote style="">Ideally a GUI-based configuration utility could be offered -- xmonad is<br/>an X11 application after all. If designed well, it could capture the<br/>flexibility of Config.hs. As for text file based configuration, the<br/>traditional UNIX option=value style is probably too limiting, so I<br/>concede that Config.hs should probably stick around for the more<br/>intrepid users.<br/></blockquote><br/>I think a GUI to help set values, from a limited range based on their<br/>types, would be lovely. If someone is motivated enough to do this, the<br/>xmonad devs would happily support it. You could roll it up in gtk2hs in<br/>an hour or two, I'd imagine.<br/><br/>Use the type information in the Config.hs file to determine acceptable<br/>ranges for values, and then have the gui constrain possible inputs to<br/>those ranges: strongly, statically typed config files, with a<br/>domain-specific gui.<br/><br/>-- Don<br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></div>
        </div>
      </div>
    </div><div class="msg" id="msg1509">
      <div class="msg-header">
        <a name="mh1509"/><span class="msg-num">12</span> "Michael F. Lamb" &lt;mike@datagrok.org&gt;
          <button onclick="location.href='/msgs/1509;reply_form'">Reply</button>
          <button onclick="location.href='/msgs/1509;reply_all_form'">Reply All</button>
      </div>
      <div class="msg-body" style="display: none;">
        <table class="msg-head">
          <tr>
            <th>Date</th>
            <td>Sep 14, 2007 5:40:54 PM
                <a class="head-toggle" href="javascript:void">
                    (more headers)</a>
            </td>
          </tr>
          <tr><th>Subject</th><td colspan="2">Re: [Xmonad] [HUMOR] xmonad useless without programming skills ?</td></tr>
          <tr><th>From</th><td colspan="2">"Michael F. Lamb" &lt;mike@datagrok.org&gt;</td></tr>
          <tr><th>To</th><td colspan="2">xmonad@haskell.org</td></tr>
        </table>
        <div>
            <div class="txt-part"><br/><blockquote style="">How many non-programmers are using tiling window managers in X11 though?<br/></blockquote><br/>I don't think that line of thinking is the right direction to go. I've liked the idea of a tiling window manager before I began using or hacking on it. I don't think there's anything inherently more programmer-ish about a window management scheme which deviates from the de facto "piles of crap" layout.<br/><br/>So, I'd agree with Alex on this, but on the other hand I would also recoil a bit at the suggestion that this feature be added to the core, since there are bound to be many differing opinions on what is best.<br/><br/><blockquote style="">What would the alternatives look like? Some ad hoc 1st (or 0th) order,<br/>configuration language like .muttrc or something nasty like VimScript?<br/></blockquote><br/>Gah! Scary.<br/><br/>Might it not be possible for there to exist something in XMonadContrib that contains all the bloat necessary to provide a gtk (or qt) gui configuration tool? That way, (in addition to Don being able to avoid this question altogether,)<br/><br/>  - Distributors could enable it in Config.hs and compile it for the "non-programmers," while the rest of us are happy with our lean, efficient core XMonad.<br/><br/>  - Various configuration fronts could be contributed and selectively enabled/ignored (GTK storing data in the gconf registry thing, QT however the KDE people store application data, vimscript, .muttrc, etc.)<br/><br/>I'm not enough of a Haskell/XMonad hacker to fully think this through though... I expect it might even sound quite naive. I'm sure I'll be able to learn a lot from your replies.<br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></div>
        </div>
      </div>
    </div><div class="msg" id="msg1510">
      <div class="msg-header color5">
        <a name="mh1510"/><span class="msg-num">13</span> Don Stewart &lt;dons@galois.com&gt;
          <button onclick="location.href='/msgs/1510;reply_form'">Reply</button>
          <button onclick="location.href='/msgs/1510;reply_all_form'">Reply All</button>
      </div>
      <div class="msg-body">
        <table class="msg-head">
          <tr>
            <th>Date</th>
            <td>Sep 14, 2007 5:44:13 PM
                <a class="head-toggle" href="javascript:void">
                    (more headers)</a>
            </td>
          </tr>
          <tr><th>Subject</th><td colspan="2">Re: [Xmonad] [HUMOR] xmonad useless without programming skills ?</td></tr>
          <tr><th>From</th><td colspan="2">Don Stewart &lt;dons@galois.com&gt;</td></tr>
          <tr><th>To</th><td colspan="2">"Michael F. Lamb" &lt;mike@datagrok.org&gt;</td></tr>
          <tr><th>CC</th><td colspan="2">xmonad@haskell.org</td></tr>
        </table>
        <div>
            <div class="txt-part">mike:<br/><blockquote style="display: none;"><br/><blockquote>How many non-programmers are using tiling window managers in X11 though?<br/></blockquote><br/>I don't think that line of thinking is the right direction to go. I've<br/>liked the idea of a tiling window manager before I began using or<br/>hacking on it. I don't think there's anything inherently more<br/>programmer-ish about a window management scheme which deviates from the<br/>de facto "piles of crap" layout.<br/><br/>So, I'd agree with Alex on this, but on the other hand I would also<br/>recoil a bit at the suggestion that this feature be added to the core,<br/>since there are bound to be many differing opinions on what is best.<br/><br/><blockquote>What would the alternatives look like? Some ad hoc 1st (or 0th) order,<br/>configuration language like .muttrc or something nasty like VimScript?<br/></blockquote><br/>Gah! Scary.<br/><br/>Might it not be possible for there to exist something in XMonadContrib<br/>that contains all the bloat necessary to provide a gtk (or qt) gui<br/>configuration tool? That way, (in addition to Don being able to avoid<br/>this question altogether,)<br/><br/> - Distributors could enable it in Config.hs and compile it for the<br/>"non-programmers," while the rest of us are happy with our lean,<br/>efficient core XMonad.<br/><br/> - Various configuration fronts could be contributed and selectively<br/>enabled/ignored (GTK storing data in the gconf registry thing, QT<br/>however the KDE people store application data, vimscript, .muttrc, etc.)<br/><br/>I'm not enough of a Haskell/XMonad hacker to fully think this through<br/>though... I expect it might even sound quite naive. I'm sure I'll be<br/>able to learn a lot from your replies.<br/></blockquote><br/>I'm text console-y enough I didn't even consider a gui tool. But that<br/>would be lovely. Being an FP guy I immediatley assumed the OP was<br/>looking for a new configuration language :)<br/><br/>Andrea, perhaps you'd like to play with gtk2hs to write a tool to modify<br/>Config.hs ?  Or anyone else interested -- I'm happy to guide people on<br/>this matter, and it could be quite robust and workable, I suspect.<br/><br/>-- Don<br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></div>
        </div>
      </div>
    </div><div class="msg" id="msg1514">
      <div class="msg-header">
        <a name="mh1514"/><span class="msg-num">14</span> Alex Tarkovsky &lt;alextarkovsky@gmail.com&gt;
          <button onclick="location.href='/msgs/1514;reply_form'">Reply</button>
          <button onclick="location.href='/msgs/1514;reply_all_form'">Reply All</button>
      </div>
      <div class="msg-body">
        <table class="msg-head">
          <tr>
            <th>Date</th>
            <td>Sep 14, 2007 6:55:27 PM
                <a class="head-toggle" href="javascript:void">
                    (more headers)</a>
            </td>
          </tr>
          <tr><th>Subject</th><td colspan="2">Re: [Xmonad] [HUMOR] xmonad useless without programming skills ?</td></tr>
          <tr><th>From</th><td colspan="2">Alex Tarkovsky &lt;alextarkovsky@gmail.com&gt;</td></tr>
          <tr><th>To</th><td colspan="2">xmonad@haskell.org</td></tr>
        </table>
        <div>
            <div class="txt-part">Michael F. Lamb wrote:<br/><blockquote style="">de facto "piles of crap" layout.<br/></blockquote><br/>Thanks, I don't think I've heard the classic WIMP paradigm described so<br/>eloquently. ;)<br/><br/><blockquote style="">Might it not be possible for there to exist something in XMonadContrib<br/>that contains all the bloat necessary to provide a gtk (or qt) gui<br/>configuration tool?<br/></blockquote><br/>I also think contrib is where it belongs.<br/><br/><blockquote style=""> - Distributors could enable it in Config.hs and compile it for the<br/>"non-programmers," while the rest of us are happy with our lean,<br/>efficient core XMonad.<br/></blockquote><br/>Distros such as Ubuntu would most likely bundle it by default, but more<br/>flexible and technically-oriented distros like Gentoo would keep it<br/>optional (just as Gentoo does with xmonad extensions).<br/><br/><blockquote style=""> - Various configuration fronts could be contributed and selectively<br/>enabled/ignored (GTK storing data in the gconf registry thing, QT<br/>however the KDE people store application data, vimscript, .muttrc, etc.)<br/></blockquote><br/>Agreeing with Don that this is a perfect project for Gtk2Hs, I must also<br/>caution against storing anything in GConf. From a usability standpoint<br/>GConf is an abomination, and I believe it only exists to placate critics<br/>of Gnome's many boneheaded nips and tucks to various interfaces. From a<br/>backing store standpoint, Gnome proper and Gnome-targeted applications<br/>(not general GTK+ applications) remain the only consumers of GConf<br/>services to date, so why not just use a single configuration data format<br/>that all platforms can use without the GConf dependencies?<br/><br/>It wouldn't be wise to have the GUI molest Config.hs either though,<br/>which brings me to another issue: Will xmonad be configurable at runtime<br/>in the future? I realize it's still in early development, but down the<br/>road it'll be awkward if users have a nice GUI configuration utility yet<br/>have to recompile xmonad after clicking on a checkbox or spinner button.<br/>Runtime code modification is the only thing I admire about Smalltalk,<br/>and it's something I hope is practical in Haskell.<br/><br/>--<br/>Alex Tarkovsky<br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></div>
        </div>
      </div>
    </div><div class="msg" id="msg1515">
      <div class="msg-header color5">
        <a name="mh1515"/><span class="msg-num">15</span> Don Stewart &lt;dons@galois.com&gt;
          <button onclick="location.href='/msgs/1515;reply_form'">Reply</button>
          <button onclick="location.href='/msgs/1515;reply_all_form'">Reply All</button>
      </div>
      <div class="msg-body">
        <table class="msg-head">
          <tr>
            <th>Date</th>
            <td>Sep 14, 2007 6:59:20 PM
                <a class="head-toggle" href="javascript:void">
                    (more headers)</a>
            </td>
          </tr>
          <tr><th>Subject</th><td colspan="2">Re: [Xmonad] [HUMOR] xmonad useless without programming skills ?</td></tr>
          <tr><th>From</th><td colspan="2">Don Stewart &lt;dons@galois.com&gt;</td></tr>
          <tr><th>To</th><td colspan="2">Alex Tarkovsky &lt;alextarkovsky@gmail.com&gt;</td></tr>
          <tr><th>CC</th><td colspan="2">xmonad@haskell.org</td></tr>
        </table>
        <div>
            <div class="txt-part">alextarkovsky:<br/><blockquote style="display: none;">Michael F. Lamb wrote:<br/><blockquote>de facto "piles of crap" layout.<br/></blockquote><br/>Thanks, I don't think I've heard the classic WIMP paradigm described so<br/>eloquently. ;)<br/><br/><blockquote>Might it not be possible for there to exist something in XMonadContrib<br/>that contains all the bloat necessary to provide a gtk (or qt) gui<br/>configuration tool?<br/></blockquote><br/>I also think contrib is where it belongs.<br/><br/><blockquote> - Distributors could enable it in Config.hs and compile it for the<br/>"non-programmers," while the rest of us are happy with our lean,<br/>efficient core XMonad.<br/></blockquote><br/>Distros such as Ubuntu would most likely bundle it by default, but more<br/>flexible and technically-oriented distros like Gentoo would keep it<br/>optional (just as Gentoo does with xmonad extensions).<br/><br/><blockquote> - Various configuration fronts could be contributed and selectively<br/>enabled/ignored (GTK storing data in the gconf registry thing, QT<br/>however the KDE people store application data, vimscript, .muttrc, etc.)<br/></blockquote><br/>Agreeing with Don that this is a perfect project for Gtk2Hs, I must also<br/>caution against storing anything in GConf. From a usability standpoint<br/>GConf is an abomination, and I believe it only exists to placate critics<br/>of Gnome's many boneheaded nips and tucks to various interfaces. From a<br/>backing store standpoint, Gnome proper and Gnome-targeted applications<br/>(not general GTK+ applications) remain the only consumers of GConf<br/>services to date, so why not just use a single configuration data format<br/>that all platforms can use without the GConf dependencies?<br/><br/>It wouldn't be wise to have the GUI molest Config.hs either though,<br/>which brings me to another issue: Will xmonad be configurable at runtime<br/>in the future? I realize it's still in early development, but down the<br/>road it'll be awkward if users have a nice GUI configuration utility yet<br/>have to recompile xmonad after clicking on a checkbox or spinner button.<br/>Runtime code modification is the only thing I admire about Smalltalk,<br/>and it's something I hope is practical in Haskell.<br/></blockquote><br/>Spencer has a possible architecture based on ghci, which would give us<br/>zero-compile reloading, using just the bytecode interpreter.<br/><br/>-- Don<br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></div>
        </div>
      </div>
    </div><div class="msg" id="msg1519">
      <div class="msg-header">
        <a name="mh1519"/><span class="msg-num">16</span> Alex Tarkovsky &lt;alextarkovsky@gmail.com&gt;
          <button onclick="location.href='/msgs/1519;reply_form'">Reply</button>
          <button onclick="location.href='/msgs/1519;reply_all_form'">Reply All</button>
      </div>
      <div class="msg-body">
        <table class="msg-head">
          <tr>
            <th>Date</th>
            <td>Sep 14, 2007 7:44:11 PM
                <a class="head-toggle" href="javascript:void">
                    (more headers)</a>
            </td>
          </tr>
          <tr><th>Subject</th><td colspan="2">Re: [Xmonad] [HUMOR] xmonad useless without programming skills ?</td></tr>
          <tr><th>From</th><td colspan="2">Alex Tarkovsky &lt;alextarkovsky@gmail.com&gt;</td></tr>
          <tr><th>To</th><td colspan="2">xmonad@haskell.org</td></tr>
        </table>
        <div>
            <div class="txt-part">Don Stewart wrote:<br/><blockquote style=""><blockquote>Runtime code modification is the only thing I admire about Smalltalk,<br/>and it's something I hope is practical in Haskell.<br/></blockquote><br/>Spencer has a possible architecture based on ghci, which would give us<br/>zero-compile reloading, using just the bytecode interpreter.<br/></blockquote><br/>Good to hear. I'd be interested in using it in some of my own projects.<br/>Do you know if this will be a generic framework, or will it be tightly<br/>integrated into xmonad?<br/><br/>--<br/>Alex Tarkovsky<br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></div>
        </div>
      </div>
    </div><div class="msg" id="msg1520">
      <div class="msg-header">
        <a name="mh1520"/><span class="msg-num">17</span> Spencer Janssen &lt;sjanssen@cse.unl.edu&gt;
          <button onclick="location.href='/msgs/1520;reply_form'">Reply</button>
          <button onclick="location.href='/msgs/1520;reply_all_form'">Reply All</button>
      </div>
      <div class="msg-body">
        <table class="msg-head">
          <tr>
            <th>Date</th>
            <td>Sep 14, 2007 8:58:14 PM
                <a class="head-toggle" href="javascript:void">
                    (more headers)</a>
            </td>
          </tr>
          <tr><th>Subject</th><td colspan="2">Re: [Xmonad] [HUMOR] xmonad useless without programming skills ?</td></tr>
          <tr><th>From</th><td colspan="2">Spencer Janssen &lt;sjanssen@cse.unl.edu&gt;</td></tr>
          <tr><th>To</th><td colspan="2">xmonad@haskell.org</td></tr>
        </table>
        <div>
            <div class="txt-part">On Friday 14 September 2007 18:44:11 Alex Tarkovsky wrote:<br/><blockquote style="">Don Stewart wrote:<br/><blockquote><blockquote>Runtime code modification is the only thing I admire about Smalltalk,<br/>and it's something I hope is practical in Haskell.<br/></blockquote><br/>Spencer has a possible architecture based on ghci, which would give us<br/>zero-compile reloading, using just the bytecode interpreter.<br/></blockquote><br/>Good to hear. I'd be interested in using it in some of my own projects.<br/>Do you know if this will be a generic framework, or will it be tightly<br/>integrated into xmonad?<br/></blockquote><br/>The idea is to package xmonad as a library, and install it just like any other<br/>Haskell library.  The executable kept in /usr/bin/xmonad might be a shell<br/>script that looks like:<br/><br/>    #!/bin/sh<br/>    runghc $HOME/.xmonad/Main.hs<br/><br/>Of course the real script would have all sorts of error handling, executing a<br/>default Main.hs if the user's Main.hs isn't available or valid.<br/><br/>Main.hs might look like:<br/><br/>    module Main where<br/><br/>    import XMonad.Main<br/>    import XMonadContrib.MyFancyContrib -- etc.<br/><br/>    main = xmonadMainWith $ defaultOptions { keybindings = ..., etc. }<br/><br/>One could imagine:<br/><br/>    module Main where<br/><br/>    import Gtk<br/>    import XMonad.Main<br/><br/>    main = do<br/>        if config exists<br/>            then parseConfig &gt;&gt;= xmonadMainWith<br/>            else do fancyGtkDialog; parseConfig &gt;&gt;= xmonadMainWith<br/><br/>Just an idea we're kicking around.<br/><br/><br/>Cheers,<br/>Spencer Janssen<br/><br/><br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></div>
        </div>
      </div>
    </div><div class="msg" id="msg1521">
      <div class="msg-header">
        <a name="mh1521"/><span class="msg-num">18</span> Spencer Janssen &lt;sjanssen@cse.unl.edu&gt;
          <button onclick="location.href='/msgs/1521;reply_form'">Reply</button>
          <button onclick="location.href='/msgs/1521;reply_all_form'">Reply All</button>
      </div>
      <div class="msg-body">
        <table class="msg-head">
          <tr>
            <th>Date</th>
            <td>Sep 14, 2007 9:12:25 PM
                <a class="head-toggle" href="javascript:void">
                    (more headers)</a>
            </td>
          </tr>
          <tr><th>Subject</th><td colspan="2">Re: [Xmonad] [HUMOR] xmonad useless without programming skills ?</td></tr>
          <tr><th>From</th><td colspan="2">Spencer Janssen &lt;sjanssen@cse.unl.edu&gt;</td></tr>
          <tr><th>To</th><td colspan="2">xmonad@haskell.org</td></tr>
        </table>
        <div>
            <div class="txt-part">On Friday 14 September 2007 17:55:27 Alex Tarkovsky wrote:<br/><blockquote style="display: none;">Michael F. Lamb wrote:<br/><blockquote>de facto "piles of crap" layout.<br/></blockquote><br/>Thanks, I don't think I've heard the classic WIMP paradigm described so<br/>eloquently. ;)<br/><br/><blockquote>Might it not be possible for there to exist something in XMonadContrib<br/>that contains all the bloat necessary to provide a gtk (or qt) gui<br/>configuration tool?<br/></blockquote><br/>I also think contrib is where it belongs.<br/><br/><blockquote> - Distributors could enable it in Config.hs and compile it for the<br/>"non-programmers," while the rest of us are happy with our lean,<br/>efficient core XMonad.<br/></blockquote><br/>Distros such as Ubuntu would most likely bundle it by default, but more<br/>flexible and technically-oriented distros like Gentoo would keep it<br/>optional (just as Gentoo does with xmonad extensions).<br/><br/><blockquote> - Various configuration fronts could be contributed and selectively<br/>enabled/ignored (GTK storing data in the gconf registry thing, QT<br/>however the KDE people store application data, vimscript, .muttrc, etc.)<br/></blockquote><br/>Agreeing with Don that this is a perfect project for Gtk2Hs, I must also<br/>caution against storing anything in GConf. From a usability standpoint<br/>GConf is an abomination, and I believe it only exists to placate critics<br/>of Gnome's many boneheaded nips and tucks to various interfaces. From a<br/>backing store standpoint, Gnome proper and Gnome-targeted applications<br/>(not general GTK+ applications) remain the only consumers of GConf<br/>services to date, so why not just use a single configuration data format<br/>that all platforms can use without the GConf dependencies?<br/></blockquote><br/><blockquote style="">It wouldn't be wise to have the GUI molest Config.hs either though,<br/></blockquote><br/>Yeah, modifying Config.hs directly is surely a path towards destruction,<br/>generating a boilerplate Main.hs which parses some sort of text database seems<br/>perfectly reasonable, though.  (see notes about this in my other email)<br/><br/><blockquote style="">which brings me to another issue: Will xmonad be configurable at runtime<br/>in the future? I realize it's still in early development, but down the<br/>road it'll be awkward if users have a nice GUI configuration utility yet<br/>have to recompile xmonad after clicking on a checkbox or spinner button.<br/>Runtime code modification is the only thing I admire about Smalltalk,<br/>and it's something I hope is practical in Haskell.<br/></blockquote><br/>Note that it's possible to run modifications without recompiling at all, just<br/>make a script (cd $xmonaddir; runghc Main.hs) called xmonad in your path.<br/><br/>I think the current static configuration is okay, we just need to make<br/>restarts more seemless.  Who says we can't write out a new Config.hs and<br/>restart xmonad each time a user clicks on a checkbox?<br/><br/><br/>Cheers,<br/>Spencer Janssen<br/><br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></div>
        </div>
      </div>
    </div><div class="msg" id="msg1528">
      <div class="msg-header color3">
        <a name="mh1528"/><span class="msg-num">19</span> Andrea Rossato &lt;mailing_list@istitutocolli.org&gt;
          <button onclick="location.href='/msgs/1528;reply_form'">Reply</button>
          <button onclick="location.href='/msgs/1528;reply_all_form'">Reply All</button>
      </div>
      <div class="msg-body">
        <table class="msg-head">
          <tr>
            <th>Date</th>
            <td>Sep 15, 2007 6:07:53 AM
                <a class="head-toggle" href="javascript:void">
                    (more headers)</a>
            </td>
          </tr>
          <tr><th>Subject</th><td colspan="2">Re: [Xmonad] [HUMOR] xmonad useless without programming skills ?</td></tr>
          <tr><th>From</th><td colspan="2">Andrea Rossato &lt;mailing_list@istitutocolli.org&gt;</td></tr>
          <tr><th>Reply-To</th><td colspan="2">mailing_list@istitutocolli.org</td></tr>
          <tr><th>To</th><td colspan="2">xmonad@haskell.org</td></tr>
        </table>
        <div>
            <div class="txt-part">On Fri, Sep 14, 2007 at 02:44:13PM -0700, Don Stewart wrote:<br/><blockquote style="">Andrea, perhaps you'd like to play with gtk2hs to write a tool to modify<br/>Config.hs ?  Or anyone else interested -- I'm happy to guide people on<br/>this matter, and it could be quite robust and workable, I suspect.<br/></blockquote><br/>Yes, I can have a look (gtk2hs is something I'd like to start playing<br/>with).<br/><br/>I'll report back on that.<br/><br/>I think that when I'll have some time I'll also start writing some kind<br/>of tutorial about configuring and extending xmonad, something for a<br/>non-haskellers audience.<br/><br/>Andrea<br/><br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></div>
        </div>
      </div>
    </div><div class="msg" id="msg1531">
      <div class="msg-header">
        <a name="mh1531"/><span class="msg-num">20</span> Alexander Tsamutali &lt;astsmtl@gmail.com&gt;
          <button onclick="location.href='/msgs/1531;reply_form'">Reply</button>
          <button onclick="location.href='/msgs/1531;reply_all_form'">Reply All</button>
      </div>
      <div class="msg-body" style="display: none;">
        <table class="msg-head">
          <tr>
            <th>Date</th>
            <td>Sep 15, 2007 10:05:58 AM
                <a class="head-toggle" href="javascript:void">
                    (more headers)</a>
            </td>
          </tr>
          <tr><th>Subject</th><td colspan="2">Re: [Xmonad] [HUMOR] xmonad useless without programming skills ?</td></tr>
          <tr><th>From</th><td colspan="2">Alexander Tsamutali &lt;astsmtl@gmail.com&gt;</td></tr>
          <tr><th>To</th><td colspan="2">xmonad@haskell.org</td></tr>
        </table>
        <div>
            <div class="txt-part">В Fri, 14 Sep 2007 15:59:20 -0700<br/>Don Stewart &lt;dons@galois.com&gt; пишет:<br/><br/><blockquote style="">Spencer has a possible architecture based on ghci, which would give us<br/>zero-compile reloading, using just the bytecode interpreter.<br/></blockquote><br/>That would be cool! I disagree with the way dwm and xmonad are<br/>configured, because it complicates the distribution of this<br/>programs (dwm "hackers" think this is a Good Thing, bah!). Also xmobar<br/>uses configuration syntax similar to haskell and some parser library.<br/>Could this be an option for xmonad?<br/><br/>--<br/>Alexander Tsamutali<br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></div>
        </div>
      </div>
    </div><div class="msg" id="msg1541">
      <div class="msg-header color4">
        <a name="mh1541"/><span class="msg-num">21</span> David Roundy &lt;droundy@darcs.net&gt;
          <button onclick="location.href='/msgs/1541;reply_form'">Reply</button>
          <button onclick="location.href='/msgs/1541;reply_all_form'">Reply All</button>
      </div>
      <div class="msg-body">
        <table class="msg-head">
          <tr>
            <th>Date</th>
            <td>Sep 16, 2007 1:18:26 PM
                <a class="head-toggle" href="javascript:void">
                    (more headers)</a>
            </td>
          </tr>
          <tr><th>Subject</th><td colspan="2">Re: [Xmonad] [HUMOR] xmonad useless without programming skills ?</td></tr>
          <tr><th>From</th><td colspan="2">David Roundy &lt;droundy@darcs.net&gt;</td></tr>
          <tr><th>To</th><td colspan="2">xmonad@haskell.org</td></tr>
        </table>
        <div>
            <div class="txt-part">On Fri, Sep 14, 2007 at 08:12:25PM -0500, Spencer Janssen wrote:<br/><blockquote style="display: none;"><blockquote>which brings me to another issue: Will xmonad be configurable at runtime<br/>in the future? I realize it's still in early development, but down the<br/>road it'll be awkward if users have a nice GUI configuration utility yet<br/>have to recompile xmonad after clicking on a checkbox or spinner button.<br/>Runtime code modification is the only thing I admire about Smalltalk,<br/>and it's something I hope is practical in Haskell.<br/></blockquote><br/>Note that it's possible to run modifications without recompiling at all, just<br/>make a script (cd $xmonaddir; runghc Main.hs) called xmonad in your path.<br/><br/>I think the current static configuration is okay, we just need to make<br/>restarts more seemless.  Who says we can't write out a new Config.hs and<br/>restart xmonad each time a user clicks on a checkbox?<br/></blockquote><br/>I disagree about the desirability of runtime configuration, but note that<br/>we already support quite a bit of runtime configurability, with<br/>runtime-configurable layouts (which can be abused to configure all sorts of<br/>other things).  This is all transiently configurable, but that something<br/>we're keen to fix, by adding show and read capabilities to layouts.<br/><br/>Just about the only thing that *isn't* runtime configurable is key<br/>bindings, and I'd definitely be glad to have that made configurable.  For<br/>instance, it might be nice to be able to define a layout in which almost<br/>all key-bindings are available to the applications, which one could use for<br/>running emacs, for instance.<br/><br/>In a language such as Haskell, it's hard to see why *any* configuration<br/>should be made static.  What would be the benefit of this? Sure, it's not<br/>too hard to restart xmonad (and it would be nice to make this even less<br/>painful), but why require it at all?<br/>--<br/>David Roundy<br/>Department of Physics<br/>Oregon State University<br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></div>
        </div>
      </div>
    </div><div class="msg" id="msg1545">
      <div class="msg-header">
        <a name="mh1545"/><span class="msg-num">22</span> "Tim Docker" &lt;timd@macquarie.com.au&gt;
          <button onclick="location.href='/msgs/1545;reply_form'">Reply</button>
          <button onclick="location.href='/msgs/1545;reply_all_form'">Reply All</button>
      </div>
      <div class="msg-body">
        <table class="msg-head">
          <tr>
            <th>Date</th>
            <td>Sep 16, 2007 8:55:02 PM
                <a class="head-toggle" href="javascript:void">
                    (more headers)</a>
            </td>
          </tr>
          <tr><th>Subject</th><td colspan="2">RE: [Xmonad] [HUMOR] xmonad useless without programming skills ?</td></tr>
          <tr><th>From</th><td colspan="2">"Tim Docker" &lt;timd@macquarie.com.au&gt;</td></tr>
          <tr><th>To</th><td colspan="2">"Don Stewart" &lt;dons@galois.com&gt;, "Alex Tarkovsky" &lt;alextarkovsky@gmail.com&gt;</td></tr>
          <tr><th>CC</th><td colspan="2">xmonad@haskell.org</td></tr>
        </table>
        <div>
            <div class="txt-part">dons wrote:<br/><br/><blockquote style="">Spencer has a possible architecture based on ghci, which would give<br/>us zero-compile reloading, using just the bytecode interpreter.<br/></blockquote><br/>An alternative approach could be a standard Config.hs that reads<br/>parameters from $HOME/.xmonad.cfg. This file would be some sort of 0-th<br/>order config language (xml?) supporting common configuration options.<br/>Then:<br/><br/>  * experts could continue to maintain a custom Config.hs, and recompile<br/>as required<br/>  * novices could edit .xmonad.cfg directly or via a GUI tool, without<br/>needing to recompile.<br/><br/>Tim<br/><br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></div>
        </div>
      </div>
    </div><div class="msg" id="msg1572">
      <div class="msg-header">
        <a name="mh1572"/><span class="msg-num">23</span> "Michael F. Lamb" &lt;mike@datagrok.org&gt;
          <button onclick="location.href='/msgs/1572;reply_form'">Reply</button>
          <button onclick="location.href='/msgs/1572;reply_all_form'">Reply All</button>
      </div>
      <div class="msg-body">
        <table class="msg-head">
          <tr>
            <th>Date</th>
            <td>Sep 17, 2007 2:09:53 PM
                <a class="head-toggle" href="javascript:void">
                    (more headers)</a>
            </td>
          </tr>
          <tr><th>Subject</th><td colspan="2">Re: [Xmonad] [HUMOR] xmonad useless without programming skills ?</td></tr>
          <tr><th>From</th><td colspan="2">"Michael F. Lamb" &lt;mike@datagrok.org&gt;</td></tr>
          <tr><th>To</th><td colspan="2">xmonad@haskell.org</td></tr>
        </table>
        <div>
            <div class="txt-part"><br/><blockquote style="">Agreeing with Don that this is a perfect project for Gtk2Hs, I must also<br/>caution against storing anything in GConf. From a usability standpoint<br/>GConf is an abomination, ...<br/></blockquote><br/>I wasn't advocating for GConf per se, only for the idea that whatever configuration format such a GUI-configurator might use stay separate and modular from XMonad base.<br/><br/><blockquote style="">It wouldn't be wise to have the GUI molest Config.hs either though,<br/></blockquote><br/>Speaking very abstractly (which may of course be completely vacuous,) I think the strong Haskeller should be able to write (in Config.hs) code which queries configuration information from a GUI configuration tool plugin, rather than have a configuration tool which manipulates the XMonad state directly by writing a Config.hs or the like. That keeps things modular, allows various GUI builders to design however they like, and doesn't take any power away from a power user.<br/><br/>I notice that when I restart XMonad with alt+q, it somehow keeps its state. Having not investigated the code very deeply and only seeing what happens to the description in my process list, it looks like the current state is (pardon my vocabulary) serialized into a string which is passed to the new process and interpreted. Is this right?<br/><br/>Please correct me if I have this wrong (because I would love to know exactly how it works.) If it's about right, would it also be possible to do the same thing with the "state" of the GUI configurator? To be specific, serializing its state to a text file when changes are made, and loading it when initialized?<br/><br/>Does there exist an elegant pattern among Haskell programs for state serialization over multiple invocations?<br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></div>
        </div>
      </div>
    </div><div class="msg" id="msg1574">
      <div class="msg-header color4">
        <a name="mh1574"/><span class="msg-num">24</span> David Roundy &lt;droundy@darcs.net&gt;
          <button onclick="location.href='/msgs/1574;reply_form'">Reply</button>
          <button onclick="location.href='/msgs/1574;reply_all_form'">Reply All</button>
      </div>
      <div class="msg-body" style="display: none;">
        <table class="msg-head">
          <tr>
            <th>Date</th>
            <td>Sep 17, 2007 2:17:02 PM
                <a class="head-toggle" href="javascript:void">
                    (more headers)</a>
            </td>
          </tr>
          <tr><th>Subject</th><td colspan="2">Re: [Xmonad] [HUMOR] xmonad useless without programming skills ?</td></tr>
          <tr><th>From</th><td colspan="2">David Roundy &lt;droundy@darcs.net&gt;</td></tr>
          <tr><th>To</th><td colspan="2">xmonad@haskell.org</td></tr>
        </table>
        <div>
            <div class="txt-part">On Mon, Sep 17, 2007 at 02:09:53PM -0400, Michael F. Lamb wrote:<br/><blockquote style="">I notice that when I restart XMonad with alt+q, it somehow keeps its<br/>state. Having not investigated the code very deeply and only seeing what<br/>happens to the description in my process list, it looks like the current<br/>state is (pardon my vocabulary) serialized into a string which is passed<br/>to the new process and interpreted. Is this right?<br/></blockquote><br/>That's precisely what we do.<br/><br/><blockquote style="">Please correct me if I have this wrong (because I would love to know<br/>exactly how it works.) If it's about right, would it also be possible to<br/>do the same thing with the "state" of the GUI configurator? To be<br/>specific, serializing its state to a text file when changes are made,<br/>and loading it when initialized?<br/></blockquote><br/>Yes, that'd be perfectly feasible.  Any state that can be dynamically<br/>changed via key combinations defined in Config.hs (e.g. the Xinerama<br/>configuration, the Layouts, the gaps, etc) could be configured by a GUI<br/>configurator, with the resultant state preserved across xmonad restarts.<br/><br/><blockquote style="">Does there exist an elegant pattern among Haskell programs for state<br/>serialization over multiple invocations?<br/></blockquote><br/>Writing the state to a file and reading this on startup would be feasible,<br/>except that the actual window handles would no longer be valid.  But yes,<br/>there's no reason why the same approach currently we use for restarts<br/>couldn't also be used for defining the current configuration.<br/>--<br/>David Roundy<br/>Department of Physics<br/>Oregon State University<br/>_______________________________________________<br/>Xmonad mailing list<br/>Xmonad@haskell.org<br/><a href="http://www.haskell.org/mailman/listinfo/xmonad">http://www.haskell.org/mailman/listinfo/xmonad</a><br/></div>
        </div>
      </div>
    </div>
  </div><div id="left-sidebar">
    <ul id="sidebar-menu">
      <li class="separator">Posterity</li>
      <li class="compose"><a href="http://localhost:8080/msgs;compose_form">New Mail</a></li>
      <li class="settings"><a href="http://localhost:8080/tags">Settings</a></li>
      <li class="separator">Views</li>
      <li>
        <a href="http://localhost:8080/tags/All%20Mail/convs">All Mail</a>
      </li><li class="active">
        <a href="http://localhost:8080/tags/Inbox/convs">Inbox</a>
      </li><li>
        <a href="http://localhost:8080/tags/Sent%20Mail/convs">Sent Mail</a>
      </li><li>
        <a href="http://localhost:8080/tags/Spam/convs">Spam</a>
      </li><li>
        <a href="http://localhost:8080/tags/Trash/convs">Trash</a>
      </li>
        <li class="separator">Tags</li>
        <li>
          <a href="http://localhost:8080/tags/todo/convs">todo</a>
        </li><li>
          <a href="http://localhost:8080/tags/xmonad/convs">xmonad</a>
        </li>
    </ul>
    <div id="footer">
      <a href="http://posterity.edgewall.org/" title="Powered by Posterity 0.7dev">
        <img width="98" height="35" src="conv876_files/powered.png"/>
      </a>
    </div>
  </div><div id="right-sidebar">
    <!-- Space for rent -->
  </div>
  </div>
</body>
</html>