<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>CQPLabs</title>
    <link href="http://cqplabs.neophilus.net/atom.xml" rel="self" />
    <link href="http://cqplabs.neophilus.net" />
    <id>http://cqplabs.neophilus.net/atom.xml</id>
    <author>
        <name>CQPLabs</name>
        <email>cqplabs@rmit.edu.au</email>
    </author>
    <updated>2014-02-08T00:00:00Z</updated>
    <entry>
    <title>Hamloak Progress</title>
    <link href="http://cqplabs.neophilus.net/projects/hamloak/2014-02-08-Place-Holder.html" />
    <id>http://cqplabs.neophilus.net/projects/hamloak/2014-02-08-Place-Holder.html</id>
    <published>2014-02-08T00:00:00Z</published>
    <updated>2014-02-08T00:00:00Z</updated>
    <summary type="html"><![CDATA[<div class='subpage' id='content'>
    <div class='inner-page'>
      <div class='newspaper'>

        

  <div id='blog-post'>

    <h2 class='crumb-title'>
      <span itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'>
        <span itemprop='title'><a href="/projects/hamloak.html">hamloak</a></span>
      </span>
      <span class='crumb-divider'>»</span>
      <span itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'>
        <span itemprop='title'>Hamloak Progress</span>
      </span>
    </h2>

    <div class='post-meta'>
    
        <div class='post-date'>Feb  8, 2014</div>
    
    
</div>

<div class='post-content'>
      <div class='markdown'>

<p>Place holder text for the Hamloak. This file will be removed when some actual work has been completed on this project.</p>

</div>
    </div>
  </div>

  </div>
    </div>

  </div><!--end content-->
]]></summary>
</entry>
<entry>
    <title>Crown Ideas</title>
    <link href="http://cqplabs.neophilus.net/projects/crown/2014-02-08-Place-Holder.html" />
    <id>http://cqplabs.neophilus.net/projects/crown/2014-02-08-Place-Holder.html</id>
    <published>2014-02-08T00:00:00Z</published>
    <updated>2014-02-08T00:00:00Z</updated>
    <summary type="html"><![CDATA[<div class='subpage' id='content'>
    <div class='inner-page'>
      <div class='newspaper'>

        

  <div id='blog-post'>

    <h2 class='crumb-title'>
      <span itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'>
        <span itemprop='title'><a href="/projects/crown.html">crown</a></span>
      </span>
      <span class='crumb-divider'>»</span>
      <span itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'>
        <span itemprop='title'>Crown Ideas</span>
      </span>
    </h2>

    <div class='post-meta'>
    
        <div class='post-date'>Feb  8, 2014</div>
    
    
</div>

<div class='post-content'>
      <div class='markdown'>

<p>Place holder text for the Crown. This file will be removed when some actual work has been completed on this project.</p>
<p>\[ \mathrm{crown} = \frac{\sin(x)}{x} \]</p>

</div>
    </div>
  </div>

  </div>
    </div>

  </div><!--end content-->
]]></summary>
</entry>
<entry>
    <title>Sceptre Ideas</title>
    <link href="http://cqplabs.neophilus.net/projects/sceptre/2014-01-31-Place-Holder.html" />
    <id>http://cqplabs.neophilus.net/projects/sceptre/2014-01-31-Place-Holder.html</id>
    <published>2014-01-31T00:00:00Z</published>
    <updated>2014-01-31T00:00:00Z</updated>
    <summary type="html"><![CDATA[<div class='subpage' id='content'>
    <div class='inner-page'>
      <div class='newspaper'>

        

  <div id='blog-post'>

    <h2 class='crumb-title'>
      <span itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'>
        <span itemprop='title'><a href="/projects/sceptre.html">sceptre</a></span>
      </span>
      <span class='crumb-divider'>»</span>
      <span itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'>
        <span itemprop='title'>Sceptre Ideas</span>
      </span>
    </h2>

    <div class='post-meta'>
    
        <div class='post-date'>Jan 31, 2014</div>
    
    
</div>

<div class='post-content'>
      <div class='markdown'>

<p>Place holder text for the Sceptre project. This file will be removed when some actual work has been completed on this project.</p>

</div>
    </div>
  </div>

  </div>
    </div>

  </div><!--end content-->
]]></summary>
</entry>
<entry>
    <title>Handle Ideas</title>
    <link href="http://cqplabs.neophilus.net/projects/autohandle/2014-01-28-Place-Holder.html" />
    <id>http://cqplabs.neophilus.net/projects/autohandle/2014-01-28-Place-Holder.html</id>
    <published>2014-01-28T00:00:00Z</published>
    <updated>2014-01-28T00:00:00Z</updated>
    <summary type="html"><![CDATA[<div class='subpage' id='content'>
    <div class='inner-page'>
      <div class='newspaper'>

        

  <div id='blog-post'>

    <h2 class='crumb-title'>
      <span itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'>
        <span itemprop='title'><a href="/projects/autohandle.html">autohandle</a></span>
      </span>
      <span class='crumb-divider'>»</span>
      <span itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'>
        <span itemprop='title'>Handle Ideas</span>
      </span>
    </h2>

    <div class='post-meta'>
    
        <div class='post-date'>Jan 28, 2014</div>
    
    
</div>

<div class='post-content'>
      <div class='markdown'>

<p>Place holder text for the Auto Handle project. This file will be removed when some actual work has been completed on this project.</p>

</div>
    </div>
  </div>

  </div>
    </div>

  </div><!--end content-->
]]></summary>
</entry>
<entry>
    <title>The Glorious Sword</title>
    <link href="http://cqplabs.neophilus.net/projects/sword/2014-01-03-Sword-Ideas.html" />
    <id>http://cqplabs.neophilus.net/projects/sword/2014-01-03-Sword-Ideas.html</id>
    <published>2014-01-03T00:00:00Z</published>
    <updated>2014-01-03T00:00:00Z</updated>
    <summary type="html"><![CDATA[<div class='subpage' id='content'>
    <div class='inner-page'>
      <div class='newspaper'>

        

  <div id='blog-post'>

    <h2 class='crumb-title'>
      <span itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'>
        <span itemprop='title'><a href="/projects/sword.html">sword</a></span>
      </span>
      <span class='crumb-divider'>»</span>
      <span itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'>
        <span itemprop='title'>The Glorious Sword</span>
      </span>
    </h2>

    <div class='post-meta'>
    
        <div class='post-date'>Jan  3, 2014</div>
    
    
        <div class='post-summary'>by David</div>
    
</div>

<div class='post-content'>
      <div class='markdown'>

<p>As CQP’s main blacksmith, I shall in be charge of the creation of the sword. To this end, I have brainstormed several ideas for the blade itself, as well as the hilt, handle, and pommel. Of course, the more elaborate I make the plans, the more effort (and more time) it will take to complete. However, regardless of this, I want the most awesome sword possible.</p>
<p>For the blade itself, I’ve been thinking of a damped harmonic oscillator style of shape. Starting high, it shall elagantly slope downwards before rising again in glorious triumph, if slightly diminished. This shall then asymptote to a straight line, eventually cut and shaped into a point. This blade shall be precisely 1 metre long (or, as close as I can get it). There shall be a double fuller, with the head of CQP inscribed between. The cutting edges will be inscribed with the great works of Quantum, those of Schrödinger, Maxwell, Lindblad and Bloch(-Redfield). After inscribing, the blade shall be coated in titanium nitride and then ground down to a mirror polish, to allow the inscriptions to be inlaid with “gold” (A system will need to be developed for additional inscriptions).</p>
<p>(Placeholder for equations)</p>
<p>For the guard, I haven’t really had too many ideas. The hilt I want to 3-D print in clear resin (because awesome), and the pommel… well. I don’t know. For the guard, I think maybe some sort of mathematical constant, or maybe something based on a certain chaotic system I know Tim is working on. Something like that would look awesome. I’m also thinking that maybe we can get these coated in diamond, for the extra awesome (and cool) factor. Here’s some cool looking hilts, which I’m thinking will be worth considering.</p>
<figure>
<img src="/images/hilts.png" alt="A few sweet designs that may be investigated further." /><figcaption>A few sweet designs that may be investigated further.</figcaption>
</figure>
<p>Of course, I am more than happy to entertain outside ideas. So long as the “outside” doesn’t leave the Physics realm. I’m planning on using some CAD software to more fully design the sword (as well as the 3-D file for the handle), so that will be coming soon!</p>
<p>Until then, keep “sharp”! hehehe…</p>

</div>
    </div>
  </div>

  </div>
    </div>

  </div><!--end content-->
]]></summary>
</entry>
<entry>
    <title>Badges List</title>
    <link href="http://cqplabs.neophilus.net/projects/badges/2014-01-03-Badges-List.html" />
    <id>http://cqplabs.neophilus.net/projects/badges/2014-01-03-Badges-List.html</id>
    <published>2014-01-03T00:00:00Z</published>
    <updated>2014-01-03T00:00:00Z</updated>
    <summary type="html"><![CDATA[<div class='subpage' id='content'>
    <div class='inner-page'>
      <div class='newspaper'>

        

  <div id='blog-post'>

    <h2 class='crumb-title'>
      <span itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'>
        <span itemprop='title'><a href="/projects/badges.html">badges</a></span>
      </span>
      <span class='crumb-divider'>»</span>
      <span itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'>
        <span itemprop='title'>Badges List</span>
      </span>
    </h2>

    <div class='post-meta'>
    
        <div class='post-date'>Jan  3, 2014</div>
    
</div>

<div class='post-content'>
      <div class='markdown'>

<h1 id="number-of-papers">Number of papers</h1>
<p>Publish or perish is the name of the game. We look to encourage the number of papers published by adding achievements to our troops.</p>
<table>
<thead>
<tr class="header">
<th style="text-align: center;">#</th>
<th style="text-align: left;">Design Image</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: center;">1</td>
<td style="text-align: left;">Paper w/ #1</td>
</tr>
<tr class="even">
<td style="text-align: center;">2</td>
<td style="text-align: left;">Paper w/ #2</td>
</tr>
<tr class="odd">
<td style="text-align: center;">5</td>
<td style="text-align: left;">Paper w/ #3</td>
</tr>
<tr class="even">
<td style="text-align: center;">10</td>
<td style="text-align: left;">Paper w/ #10</td>
</tr>
<tr class="odd">
<td style="text-align: center;">20</td>
<td style="text-align: left;">Paper w/ #20</td>
</tr>
<tr class="even">
<td style="text-align: center;">50</td>
<td style="text-align: left;">Paper w/ #50</td>
</tr>
</tbody>
</table>
<h1 id="number-of-citations">Number of citations</h1>
<p>What good is a publication if no-one talks about it? Here are the awards for citations.</p>
<table>
<thead>
<tr class="header">
<th style="text-align: center;">#</th>
<th style="text-align: left;">Design Image</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: center;">1</td>
<td style="text-align: left;">Bubble w/ #1</td>
</tr>
<tr class="even">
<td style="text-align: center;">5</td>
<td style="text-align: left;">Bubble w/ #5</td>
</tr>
<tr class="odd">
<td style="text-align: center;">10</td>
<td style="text-align: left;">Bubble w/ #10</td>
</tr>
<tr class="even">
<td style="text-align: center;">25</td>
<td style="text-align: left;">Bubble w/ #25</td>
</tr>
<tr class="odd">
<td style="text-align: center;">50</td>
<td style="text-align: left;">Bubble w/ #50</td>
</tr>
<tr class="even">
<td style="text-align: center;">100</td>
<td style="text-align: left;">Bubble w/ #100</td>
</tr>
<tr class="odd">
<td style="text-align: center;">500</td>
<td style="text-align: left;">Bubble w/ #500</td>
</tr>
<tr class="even">
<td style="text-align: center;">1000</td>
<td style="text-align: left;">Bubble w/ #1000</td>
</tr>
</tbody>
</table>
<h1 id="physical-review-publications">Physical Review Publications</h1>
<p>Physical Review, known for reviewing physical things is a time honored journal of which many physicists publish. One goal however is not so easy, that is the coveted alphabet where a physicist has publications in every single journal, we wish to acknowledge said physicist’s path to greatness.</p>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Journal</th>
<th style="text-align: center;">Design Image</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">Physical Review</td>
<td style="text-align: center;">PR-Hourglass</td>
</tr>
<tr class="even">
<td style="text-align: left;">Physical Review A</td>
<td style="text-align: center;">PRA</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Physical Review B</td>
<td style="text-align: center;">PRB</td>
</tr>
<tr class="even">
<td style="text-align: left;">Physical Review C</td>
<td style="text-align: center;">PRC</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Physical Review D</td>
<td style="text-align: center;">PRD</td>
</tr>
<tr class="even">
<td style="text-align: left;">Physical Review E</td>
<td style="text-align: center;">PRE</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Physical Review X</td>
<td style="text-align: center;">PRX</td>
</tr>
<tr class="even">
<td style="text-align: left;">Physical Review Letters</td>
<td style="text-align: center;">PRL</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Reviews of Modern Physics</td>
<td style="text-align: center;">RMP</td>
</tr>
<tr class="even">
<td style="text-align: left;">All of them</td>
<td style="text-align: center;">PR-alpha-beta</td>
</tr>
</tbody>
</table>
<p>Other APS journals exist but I’m not sure if I should include them.</p>
<h1 id="programming-language">Programming Language</h1>
<p>This is where we celebrate a person’s proficiency in the glorious language of computers.</p>
<table>
<thead>
<tr class="header">
<th style="text-align: center;">Language</th>
<th style="text-align: center;">Design Image</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: center;">MATLAB</td>
<td style="text-align: center;">MATLAB symbol</td>
</tr>
<tr class="even">
<td style="text-align: center;">MATHEMATICA</td>
<td style="text-align: center;">MATHEMATICA symbol</td>
</tr>
<tr class="odd">
<td style="text-align: center;">JAVA</td>
<td style="text-align: center;">JAVA symbol</td>
</tr>
<tr class="even">
<td style="text-align: center;">PYTHON</td>
<td style="text-align: center;">PYTHON symbol</td>
</tr>
<tr class="odd">
<td style="text-align: center;">HASKELL</td>
<td style="text-align: center;">HASKELL symbol</td>
</tr>
</tbody>
</table>
<p>Other languages to be added.</p>
<h1 id="other-achievements">Other Achievements</h1>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Achievement</th>
<th style="text-align: left;">Design Image</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">Create your own graph type</td>
<td style="text-align: left;">?</td>
</tr>
<tr class="even">
<td style="text-align: left;">Get published without question</td>
<td style="text-align: left;">A question mark with a no symbol.</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Innovator; create a new achievement</td>
<td style="text-align: left;">?</td>
</tr>
</tbody>
</table>
<h1 id="rank">Rank</h1>
<p>This is also a work in progress. Rank is designated by degree level. Whether someone achieves a rank by beginning a degree or completing it is yet to be decided. Ranks are also a work in progress.</p>
<table>
<thead>
<tr class="header">
<th style="text-align: center;">Uni Rank</th>
<th style="text-align: left;">Military Equivalent</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: center;">Undergrad</td>
<td style="text-align: left;">Private</td>
</tr>
<tr class="even">
<td style="text-align: center;">Honours</td>
<td style="text-align: left;">Private first class</td>
</tr>
<tr class="odd">
<td style="text-align: center;">Masters</td>
<td style="text-align: left;">?</td>
</tr>
<tr class="even">
<td style="text-align: center;">Ph. D.</td>
<td style="text-align: left;">?</td>
</tr>
<tr class="odd">
<td style="text-align: center;">Fellow</td>
<td style="text-align: left;">?</td>
</tr>
<tr class="even">
<td style="text-align: center;">A. Prof.</td>
<td style="text-align: left;">?</td>
</tr>
<tr class="odd">
<td style="text-align: center;">Prof.</td>
<td style="text-align: left;">?</td>
</tr>
</tbody>
</table>
<h1 id="a-note-from-the-author">A note from the author</h1>
<p>Discussion is acknowledged and encouraged (there is an achievement for inventing a new badge/achievement after all) and so all opinions are welcome. If you think something needs tweaking just give us a buzz.</p>

</div>
    </div>
  </div>

  </div>
    </div>

  </div><!--end content-->
]]></summary>
</entry>
<entry>
    <title>Horn Brainstorming</title>
    <link href="http://cqplabs.neophilus.net/projects/horn/2014-01-02-Horn-Brainstorming.html" />
    <id>http://cqplabs.neophilus.net/projects/horn/2014-01-02-Horn-Brainstorming.html</id>
    <published>2014-01-02T00:00:00Z</published>
    <updated>2014-01-02T00:00:00Z</updated>
    <summary type="html"><![CDATA[<div class='subpage' id='content'>
    <div class='inner-page'>
      <div class='newspaper'>

        

  <div id='blog-post'>

    <h2 class='crumb-title'>
      <span itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'>
        <span itemprop='title'><a href="/projects/horn.html">horn</a></span>
      </span>
      <span class='crumb-divider'>»</span>
      <span itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'>
        <span itemprop='title'>Horn Brainstorming</span>
      </span>
    </h2>

    <div class='post-meta'>
    
        <div class='post-date'>Jan  2, 2014</div>
    
    
        <div class='post-summary'>by David</div>
    
</div>

<div class='post-content'>
      <div class='markdown'>

<p>There are a few ideas for the horn so far. These include using a cow horn such as <a href="http://www.highlandhorn.com/cow-horn/cow-horn-craft-grade-64.html">this</a> or a thing known as a <a href="http://en.wikipedia.org/wiki/Shofar">shofar</a>. There are several pros and cons to getting the tone that we require for the Haskell Horn. That is:</p>
<blockquote>
<p>[A] baritone blast to penetrate walls…</p>
</blockquote>
<figure>
<img src="/images/horns.png" alt="Possible horn configurations" /><figcaption>Possible horn configurations</figcaption>
</figure>
<p>That’s all just basic things, though. What we really need is a practice horn, so that people who aren’t brass players (i.e. David) can get their <a href="http://en.wikipedia.org/wiki/Embouchure">Embouchure</a> going. This is particularly important to be able to do correctly when blowing the final horn, as any failure on the part of the blowee would reflect badly upon those who follow Haskell.</p>
<p>Other valid concerns include the size of the horn itself, as space is severely limited. This, however, will affect the tone of the call. Since horns aren’t too expensive, this can be experimented with by the purchase of several different sizes. We, of course, want the deepest tone possible, for the space available. One option would be to curl a larger horn around, sort of like a trombone. This presents problems of its own, as then the horn may start becoming heavy, and I am unsure as to the ease of curling horn.</p>
<p>For now, though, the possibilities are almost endless. Who knows what may lie ahead?</p>
<p>I do.</p>
<p>Awesomeness.</p>
<figure>
<img src="/images/blowinghorn.png" alt="A Yemenite Shofar made from a Greater Kudu horn" /><figcaption>A Yemenite Shofar made from a Greater Kudu horn</figcaption>
</figure>

</div>
    </div>
  </div>

  </div>
    </div>

  </div><!--end content-->
]]></summary>
</entry>
<entry>
    <title>Teensy</title>
    <link href="http://cqplabs.neophilus.net/projects/chadburn/2014-01-02-Teensy.html" />
    <id>http://cqplabs.neophilus.net/projects/chadburn/2014-01-02-Teensy.html</id>
    <published>2014-01-02T00:00:00Z</published>
    <updated>2014-01-02T00:00:00Z</updated>
    <summary type="html"><![CDATA[<div class='subpage' id='content'>
    <div class='inner-page'>
      <div class='newspaper'>

        

  <div id='blog-post'>

    <h2 class='crumb-title'>
      <span itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'>
        <span itemprop='title'><a href="/projects/chadburn.html">chadburn</a></span>
      </span>
      <span class='crumb-divider'>»</span>
      <span itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'>
        <span itemprop='title'>Teensy</span>
      </span>
    </h2>

    <div class='post-meta'>
    
        <div class='post-date'>Jan  2, 2014</div>
    
    
        <div class='post-summary'>by Tim</div>
    
</div>

<div class='post-content'>
      <div class='markdown'>

<p>The Teensy arrived in the mail today. It’s actually a lot smaller than I thought:</p>
<figure>
<img src="/images/teensy.jpg" alt="A gigantic 5c piece" /><figcaption>A gigantic 5c piece</figcaption>
</figure>
<p>Depending on how I go today I may start working on the hardware components of the chadburn, but this is unlikely. This post will be completed when the prototype is functioning.</p>

</div>
    </div>
  </div>

  </div>
    </div>

  </div><!--end content-->
]]></summary>
</entry>
<entry>
    <title>E.O.T. Panel</title>
    <link href="http://cqplabs.neophilus.net/projects/chadburn/2014-01-01-EOT-Panel.html" />
    <id>http://cqplabs.neophilus.net/projects/chadburn/2014-01-01-EOT-Panel.html</id>
    <published>2014-01-01T00:00:00Z</published>
    <updated>2014-01-01T00:00:00Z</updated>
    <summary type="html"><![CDATA[<div class='subpage' id='content'>
    <div class='inner-page'>
      <div class='newspaper'>

        

  <div id='blog-post'>

    <h2 class='crumb-title'>
      <span itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'>
        <span itemprop='title'><a href="/projects/chadburn.html">chadburn</a></span>
      </span>
      <span class='crumb-divider'>»</span>
      <span itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'>
        <span itemprop='title'>E.O.T. Panel</span>
      </span>
    </h2>

    <div class='post-meta'>
    
        <div class='post-date'>Jan  1, 2014</div>
    
    
        <div class='post-summary'>by Tim</div>
    
</div>

<div class='post-content'>
      <div class='markdown'>

<p>Whilst the panel is ultimately served up by the Web Server, I thought it warranted a separate post.</p>
<p>In the name of doing things as difficult as possible, but the end result being technically and visually awesome, I decided that the Chadburn itself should be constructed as an <a href="http://en.wikipedia.org/wiki/Scalable_Vector_Graphics">svg</a>, considering its support for both animation and interactivity; the fact that <a href="http://www.inkscape.org/en/">Inkscape</a> has scared me for quite some time (&amp; this should be rectified) and because flash is, well… no.</p>
<p>I found Inkscape to be usable, although a bit clunky. It’s output is pretty bloated too, but as svg’s are essentially just xml markup they were surprisingly easy to optimise. Fat could just be trimmed out line by line. When it comes to animation time, there are two choices: <a href="http://en.wikipedia.org/wiki/Synchronized_Multimedia_Integration_Language">SMIL</a> or javascript. SMIL is relatively limited in its capabilities (simple motion tweens, transitions; but not interactivity), so I ended up using <a href="http://snapsvg.io/">Snap.svg</a> - which was surprisingly powerful and easy to use.</p>
<p>I won’t go over the code here because it’s essentially straightforward HTML5 and simple javascript. Take a look at <a href="https://github.com/Libbum/Chadburn/blob/master/eotserver/panel.html">panel.html</a> and the <a href="https://github.com/Libbum/Chadburn/tree/master/eotserver/static">static/</a> on Github if you’re interested.</p>
<p>Here’s a quick look at the panel itself:</p>
<figure>
<img src="/images/eotpanel.png" alt="Dynamically scaling awesome and waves to make you feel like you’re actually controlling a ship." /><figcaption>Dynamically scaling awesome and waves to make you feel like you’re actually controlling a ship.</figcaption>
</figure>
<p>Usage is pretty simple. When the mechanical E.O.T. updates, the socket server will broadcast the new state and the red indicator will move to the associated position. To acknowledge this command, the user clicks on the appropriate region, which will send and acceptence back to the mechanical version, as well as update the user’s virtual chadburn state.</p>
<p>A quick example of all of this happening can be watched below. For now I’m not allowing the server visible to the internet so you can’t test it out for your self just now. This will be possible once it’s installed and tested on Fenchurch.</p>
<iframe class="youtube" width="560" height="315" src="//www.youtube.com/embed/XEiyiv0jKXQ" frameborder="0" allowfullscreen></iframe>
<p><br></p>
<p>There’s a small <a href="http://blog.timesunion.com/tech/files/2010/03/mozartsghost.png">π</a> button in the bottom right hand corner that will bring up the debug menu if you want to fiddle. The response commands are listed in the <code>WebSocketHandler</code> class of the <a href="/projects/chadburn/2013-12-27-Web-Server.html#code">server code</a>.</p>
<figure>
<img src="/images/eotdebug.png" alt="Such power" /><figcaption>Such power</figcaption>
</figure>

</div>
    </div>
  </div>

  </div>
    </div>

  </div><!--end content-->
]]></summary>
</entry>
<entry>
    <title>Web Server</title>
    <link href="http://cqplabs.neophilus.net/projects/chadburn/2013-12-27-Web-Server.html" />
    <id>http://cqplabs.neophilus.net/projects/chadburn/2013-12-27-Web-Server.html</id>
    <published>2013-12-27T00:00:00Z</published>
    <updated>2013-12-27T00:00:00Z</updated>
    <summary type="html"><![CDATA[<div class='subpage' id='content'>
    <div class='inner-page'>
      <div class='newspaper'>

        

  <div id='blog-post'>

    <h2 class='crumb-title'>
      <span itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'>
        <span itemprop='title'><a href="/projects/chadburn.html">chadburn</a></span>
      </span>
      <span class='crumb-divider'>»</span>
      <span itemscope='itemscope' itemtype='http://data-vocabulary.org/Breadcrumb'>
        <span itemprop='title'>Web Server</span>
      </span>
    </h2>

    <div class='post-meta'>
    
        <div class='post-date'>Dec 27, 2013</div>
    
    
        <div class='post-summary'>by Tim</div>
    
</div>

<div class='post-content'>
      <div class='markdown'>

<p>The Web Server component of the E.O.T. will probably be the most complicated, so I started with it. A <a href="https://github.com/Libbum/Chadburn">Github repo</a> has also been created that will hold the <a href="/projects/chadburn/2014-01-01-EOT-Panel.html">panel</a> and the Teensy control code too.</p>
<p>The soft plan at the moment will be to write a number / status value to a file via the Teensy; which will be written in <code>C</code>. Implementing the rest of the stack in <code>C</code> is madness considering we have no need to keep everything embedded.</p>
<p>This means that we’ll need a file watcher connected to a web app for the panel interface (which, with <code>v1.0</code> will be a soft panel). I know of a decent watcher in <code>Ruby</code> and a couple in <code>Python</code>, and considering I hate <code>Ruby</code> and <em>Fenchurch</em> already has <code>Python</code> (somewhat) installed; it seemed like a good starting point. <code>Python</code> also has a decent http server stack so that’s a plus; but:</p>
<figure>
<img src="/images/noidea.jpg" alt="What is this shit" /><figcaption>What is this shit</figcaption>
</figure>
<p>with <code>Python</code>… I could argue that this could all be done in <code>Haskell</code> too, but no-one likes and Evangelist.</p>
<p>So next step: I don’t want to have to refresh the page on an update of the E.O.T. (i.e. a modification in the status file), nor do I want to poll the server with a tonne of ajax queries every 30 seconds or so. Although the update doesn’t really need to come through as a push notification, it’s also useless if <strong>coffee</strong> is called and no notification arrives for 15 minutes…</p>
<p>(Very, very) long story short; I’ve implemented the communication system using <a href="http://en.wikipedia.org/wiki/WebSocket">Web Sockets</a>. They’re compaitible with most browsers (maybe not if you use IE, but also: if you use IE I don’t care about notifying you of anything anyway) as long as it’s a relatively recent build (Chrome though: you’re good almost as far back as the dark ages).</p>
<p><a href="http://www.tornadoweb.org">Tornado</a> is a great Socket server capable asynchronous (threaded) processes. This is quite helpful for us here because our file watcher will need to run in a separate thread. If any of you have worked with async before you’ll know it’s a nightmare if you don’t have things set up right: race conditions, deadlocks <em>etc. etc.</em> It also handles many unique clients - so we can all have the panel open on each of our machines. With the web sockets always open (but not polling), we will have push notifications from the E.O.T. without any overhead on Fenchurch or our local machines.</p>
<p>Once the server is initialised, a callback to <a href="http://pythonhosted.org/watchdog/">Watchdog</a> is added, which watches <code>status.eot</code>: the file written via the teensy, for modifications. If the file has changed (the E.O.T. position has been changed), that value will be instantly read and pushed through the open web sockets to each attached client.</p>
<p>A small amount of debugging has also been implemented (see the <code>on_message</code> member of the <code>WebSocketHandler</code> class below), which is currently accessible via the panel; although it’ll most likely be removed in the future.</p>
<p>Clients are currently identified by <code>uuid</code>, but in the future this can be changed to something more personal, a mac address, something like that. It depends on how much capability we want to put into the panel and if any decent ideas are thought up along the way. One thing that I’ve left out presently is a broadcast update of each client’s acceptance message. I’ve done this because it may be a good way in the future to indicate who is coming to <strong>coffee</strong> or something.</p>
<p>The only other thing of note is that I’ve implemented a graceful shutdown so Jared (or any other sudoer) can call a <code>kill -2</code> on the server to halt it if it’s being an ass. It will call shutdown routines for the watcher and allow any further socket communication to cease (with a maximum waiting time of 5 seconds) before ultimately killing itself.</p>
<p>The code for <a href="https://github.com/Libbum/Chadburn/tree/3ca93285c219a7ae818c116e12eff649864bba79">v0.5</a> is posted below with enough comments to get you by. Most of those reading this will be familiar enough with <code>Matlab</code> to be able to ‘read’ the <code>Python</code> syntax.</p>
<h1 id="code">server.py</h1>
<figure class="code"><div class="code-container python"></div></figure>

</div>
    </div>
  </div>

  </div>
    </div>

  </div><!--end content-->
]]></summary>
</entry>

</feed>
