<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>some random text about funky things &#187; Projects</title>
	<atom:link href="http://janpaulposma.nl/category/projects/feed" rel="self" type="application/rss+xml" />
	<link>http://janpaulposma.nl</link>
	<description>by Jan Paul Posma</description>
	<lastBuildDate>Sun, 08 Jan 2012 22:01:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Help, I want to change Wikipedia!</title>
		<link>http://janpaulposma.nl/help-i-want-to-change-wikipedia</link>
		<comments>http://janpaulposma.nl/help-i-want-to-change-wikipedia#comments</comments>
		<pubDate>Wed, 30 Nov 2011 17:09:55 +0000</pubDate>
		<dc:creator>JP</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://janpaulposma.nl/?p=573</guid>
		<description><![CDATA[Wikipedia has a problem. The number of active volunteers has been slowly decreasing for a couple of years. There are several reasons for this, and one of them is that it has become more difficult to edit Wikipedia. When you click the &#8220;Edit&#8221; button on some page, one expects to see an interface like Microsoft [...]]]></description>
			<content:encoded><![CDATA[<p>Wikipedia has a problem. The number of active volunteers has been slowly decreasing for a couple of years. There are several reasons for this, and one of them is that it has become more difficult to edit Wikipedia. When you click the &#8220;Edit&#8221; button on some page, one expects to see an interface like Microsoft Word or Google Docs. Exactly the same appearance as when viewing the page, only now with a cursor and controls to edit the text and insert links and media. However, the opposite is true: you see a huge text box containing something that looks like a programming language.</p>
<p><a href="http://janpaulposma.nl/wp-content/uploads/2011/11/traditional.png" class="lightbox"><img src="http://janpaulposma.nl/wp-content/uploads/2011/11/traditional-300x155.png" alt="Traditional wikitext editor" title="Traditional wikitext editor" width="300" height="155" class="alignnone size-medium wp-image-575" /></a></p>
<p><span id="more-573"></span></p>
<p>For my bachelor&#8217;s thesis at the <a href="http://www.rug.nl/corporate/index?lang=en">University of Groningen</a> I investigated ways of improving this experience of editing Wikipedia. Why doesn&#8217;t it already use a visual editor such as Google Docs? This has everything to do with <a href="http://en.wikipedia.org/wiki/Wiki_markup">wikitext</a>, this language you see when editing a page. Wikitext is the language in which pages on several wikis, including Wikipedia, are stored and edited. Once you save a page, this wikitext gets translated into HTML, the language used by web browsers to show a page.</p>
<p>Wikipedia was founded in 2001, just after the internet bubble, but before people were speaking of a Web 2.0. Back then it made sense to use such a language as wikitext. Microsoft Word already existed, but an online variant simply wasn&#8217;t there yet. The techniques and standards for such an interface on the web were not developed yet, and only some early experimental designs were being tested. It was possible to use simple text boxes in web browsers, though, so initially this was used to edit pages. To be able to apply some markup to pages, some codes were introduced, such as <code>'''</code><strong>bold</strong><code>'''</code>, <code>''</code><em>italic</em>&#8221;, <code>[[</code><a href="#">link</a><code>]]</code>, and <span style="font-size: 120%; font-weight: bold;"><code>==</code> heading <code>==</code></span>. These codes were translated into HTML by means of substitution: first occurrences of <code>'''</code> were replaced by <code>&lt;b&gt;</code> and <code>&lt;/b&gt;</code>, the HTML tags denoting bold tags. Similarly the other codes were replaced by their harder to read HTML equivalents.</p>
<p>Because Wikipedia was growing rapidly, it became necessary to extend this list of codes to make common tasks easier, such as maintaining lists of references, including info boxes placed at the top right of pages, and so on. These additions were essential to Wikipedia&#8217;s volunteers, but at the same time the wikitext language became ever more convoluted.</p>
<p>Now, however, people are expecting something better than a huge text box. To make it easier for potential volunteers to contribute, it is necessary to offer an interface that is widely known, such as a visual editor. On the other hand, it isn&#8217;t desirable to get rid of wikitext completely, as this would alienate tens of thousands currently active contributors, who are used to this language. A better solution would be to still store the pages in wikitext, but to offer both ways of editing: visual editor for new users, and traditional wikitext editing for existing users.</p>
<p>However, building a visual editor on top of wikitext is easier said than done. This is because of the way wikitext is transformed to HTML, with a number of subsequent substitutions. A common way of building a visual editor on top of a language, is by using an intermediate representation of the text, called a document tree or syntax tree. Such a tree represents the page in a hierarchical way. A page contains paragraphs, paragraphs contain sentences, and sentences contain pieces of text, links, media, and so on. Alas, wikitext can&#8217;t be described by such a hierarchical model, because these substitutions make sure there is no such thing as <em>wrong</em> wikitext. There are even substitutions that fix common mistakes, such as <code>'''bold [[link''']]</code>. This is equivalent to <code>'''bold [[link]]'''</code>, which <em>has</em> a defined hierarchy: the link is inside the bold text. In the former example, this hierarchy is not present: the bold text ends before the link element is closed.</p>
<p>While this is a silly example, there are more <a href="http://www.wikisym.org/ws2011/_media/proceedings:p72-dohrn.pdf">complex cases</a>, which are widely used in Wikipedia. There are people <a href="http://www.mediawiki.org/wiki/Wikitext.next">working</a> on a intermediate representation that <em>does</em> allow for these kinds of cases, but as this is quite difficult it may take a while.</p>
<p>For my thesis I investigated if it&#8217;s perhaps possible to build a different kind of interface instead of a visual editor, which is both easy to use and easier to implement on top of wikitext. Eventually I arrived at a compromise: users get to see the same page when editing as when viewing, but they can&#8217;t edit it directly. Instead, there are some explicitly marked elements on the page that are editable, such as sentences, paragraphs, lists, info boxes, etc. Such editable elements are marked by either a light blue background colour, or in case of larger elements such as paragraphs, by a bar at the left of the element. When a user moves the mouse over such an element, it lights up in a darker colour, indicating it can be clicked.</p>
<p><a href="http://janpaulposma.nl/wp-content/uploads/2011/11/editor.png" class="lightbox"><img src="http://janpaulposma.nl/wp-content/uploads/2011/11/editor-300x271.png" alt="In-line editor" title="In-line editor" width="300" height="271" class="alignnone size-medium wp-image-599" /></a></p>
<p>Once clicked, a popup appears with the <em>original</em> wikitext for that element. Once the user has edited the wikitext and confirmed the change, the popup disappears and the page is updated with the new content.</p>
<p><img src="http://janpaulposma.nl/wp-content/uploads/2011/11/basic.png" alt="Basic idea for in-line editing" title="Basic idea for in-line editing" width="423" height="169" class="alignnone size-full wp-image-592" /></p>
<p>Now, the user still has to edit wikitext, but in much smaller quantities. The idea is that there are not so many complex codes inside a single sentence or even paragraph, which makes it a lot less scary for potential volunteers to play around with a page. Also, the direct feedback when editing a small piece of wikitext may help in this, as it immediately clear what effect the changed wikitext has on the page.</p>
<p>The big advantage is that it&#8217;s not required to use an intermediate representation when generating such an interface. It&#8217;s only necessary to know for the editable elements to which parts of the original wikitext they correspond. For example, if it is known for a certain paragraph in the HTML output to which exact lines in the wikitext it corresponds, then we can show this wikitext when clicking the paragraph on the HTML page, and replace it when the user changes this wikitext.</p>
<p>To get the correspondence between wikitext and HTML I use a trick: <em>annotation</em>. Before the wikitext is transformed to HTML, I add some codes to it to mark some positions. These codes are chosen in such a way that they are not transformed into anything else, and they are also all unique. They are placed around basic elements, such as paragraphs, sentences, in fact everything we want to make editable and is easy to recognise. For every added code, we also record the exact position of the code inside the original wikitext. After this, the <em>annotated wikitext</em> is transformed into HTML, and the codes survive this transformation. Finally, the codes themselves are transformed again to make a valid HTML page (see Example 1). This way, every editable element gets a unique identifier based on the code it belongs to, so now it is possible to look up positions in the original wikitext whenever an such an element is clicked.</p>
<div style="border: 1px solid #EFF8FB;">
<ul style="list-style-type: lower-alpha">
<li><code>This is an example. A sentence with a [[link]].</code></li>
<li><code>&lt;paragraph-0&gt;<br />
&lt;sentence-0&gt;This is an example.&lt;/sentence-0&gt;<br />
&lt;sentence-1&gt;A sentence with a [[link]].&lt;/sentence-1&gt;<br />
&lt;/paragraph-0&gt;<br />
</code></li>
<li><code>* paragraph-0: [1..47]<br />
* sentence-0: [1..19]<br />
* sentence-1: [20..47]<br />
</code></li>
<li><code>&lt;p&gt;<br />
&lt;paragraph-0&gt;<br />
&lt;sentence-0&gt;This is an example.&lt;/sentence-0&gt;<br />
&lt;sentence-1&gt;A sentence with a [[link]].<br />
&lt;/sentence-1&gt;<br />
&lt;/paragraph-0&gt;<br />
&lt;/p&gt;<br />
</code></li>
<li><code>&lt;p id=”paragraph-0”&gt;<br />
&lt;span id=”sentence-0”&gt;This is an example.&lt;/span&gt;<br />
&lt;span id=”sentence-1”&gt;A sentence with a [[link]].&lt;/span&gt;<br />
&lt;/p&gt;<br />
</code></li>
</ul>
<p style="margin: 10px 10px 10px 25px"><strong>Example 1</strong>. Annotation during transformation of wikitext to HTML:<br />
(a) original wikitext, (b) wikitext after annotation, (c) list with positions, (d) HTML after transformation, (e) final HTML after using the annotations to generate HTML tags.</p>
</div>
<p>This doesn&#8217;t directly solve the problem of hierarchy, as HTML itself expects a strict hierarchy on elements. In the transformation this is fixed for the wikitext, but not for the added codes. This means that the example from above is still invalid:<br />
<code><br />
&lt;sentence-0&gt;<br />
&lt;bold-0&gt;'''bold &lt;link-0&gt;[[link'''&lt;/bold-0&gt;]]&lt;/link-0&gt;<br />
&lt;/sentence-0&gt;<br />
</code></p>
<p>After all, <code>link-0</code> has to be closed before <code>bold-0</code> is closed. This time, however, there is a remarkable simple solution: we can just remove all the conflicting codes! If it&#8217;s not possible to edit a single link in some cases, this doesn&#8217;t really matter, as it can still be changed by editing the entire sentence:</p>
<p><code><br />
&lt;sentence-0&gt;<br />
'''bold [[link''']]<br />
&lt;/sentence-0&gt;<br />
</code></p>
<p>There is always an element at a higher level that doesn&#8217;t conflict with any other element. In the worst case this means the highest element — the entire page — has to be edited, as that can never conflict with anything else. This is rare, however, and in most cases editing a single sentence or paragraph suffices. Such a fallback mechanism for weirder cases of wikitext does not exist for a visual editor.</p>
<p>You may wonder whether or not such an interface in which the user still has to edit wikitext — be it a bit less — is any improvement at all. To test this, I&#8217;ve worked together with <a href="http://grnet.gr/default.asp?pid=1&amp;la=2">GRNET</a>, a Greek research institute, to test this hypothesis. They tested my final interface with &#8220;real&#8221; users, to see whether it works or not. The results were mostly positive, users found it quite easy to do most basic operations. Complex tasks were still difficult for most users, especially because users tried to do things they were used to do with visual editors, such as dragging and dropping of elements. While this is a downside of such a new editing paradigm, it was great to see how most tasks became a lot easier.</p>
<p>Despite these positive results you won&#8217;t see this interface on Wikipedia anytime soon, as it&#8217;s not finished. In my thesis I describe all the algorithms and other ideas for finishing the interface, but as the Wikmedia Foundation recently started working on a true <a href="http://www.mediawiki.org/wiki/Visual_editor">visual editor</a>, I decided to put this project on hold for now. On the other hand, an editor like this has other advantages, such as being easier to use than one big text box for power users who don&#8217;t want to use a visual editor, or for newcomers who&#8217;d like to slowly learn to do more complex tasks. So who knows, perhaps one day you can use my interface to edit Wikipedia!</p>
<ul>
<li>Adapted from &#8220;<a href="http://janpaulposma.nl/wp-content/uploads/2011/11/perio-final.pdf">Help, ik wil Wikipedia veranderen</a>&#8220;, <a href="http://perio.fmf.nl/">FMF Periodiek</a>, #3 2011.</li>
<li>Based on the bachelor&#8217;s thesis &#8220;<a href="http://janpaulposma.nl/wp-content/uploads/2011/11/INF-BA-2011-J.P.Posma.pdf">In-line Editing: a New Approach to Editing Wikis</a>&#8220;, Jan Paul Posma, University of Groningen, 2011.</li>
<li>Implemented in the MediaWiki extension <a href="http://www.mediawiki.org/wiki/Extension:InlineEditor">InlineEditor</a>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://janpaulposma.nl/help-i-want-to-change-wikipedia/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Analog highlights of 2010</title>
		<link>http://janpaulposma.nl/analog-highlights-of-2010</link>
		<comments>http://janpaulposma.nl/analog-highlights-of-2010#comments</comments>
		<pubDate>Sun, 16 Jan 2011 23:48:37 +0000</pubDate>
		<dc:creator>JP</dc:creator>
				<category><![CDATA[Art]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[SCN]]></category>

		<guid isPermaLink="false">http://janpaulposma.nl/?p=496</guid>
		<description><![CDATA[When I started blogging, I was afraid this would happen: that I would stop after a few posts. I try to only blog when I&#8217;d like to present something. However, the moment has come to write again: this time I&#8217;d like to show you some photographs taken with a Canon A-1, an old analog camera. [...]]]></description>
			<content:encoded><![CDATA[<p>When I started blogging, I was afraid this would happen: that I would stop after a few posts. I try to only blog when I&#8217;d like to present something. However, the moment has come to write again: this time I&#8217;d like to show you some photographs taken with a Canon A-1, an old analog camera.</p>
<p><a href="http://janpaulposma.nl/wp-content/uploads/2011/01/Scan.jpg" class="lightbox"><img src="http://janpaulposma.nl/wp-content/uploads/2011/01/Scan-300x200.jpg" alt="" title="Scan" width="300" height="200" class="alignnone size-medium wp-image-497" /></a></p>
<p><span id="more-496"></span></p>
<p>This first picture has been taken at my parents&#8217; home. I used a star filter, which doesn&#8217;t really show, except for the reflection in the window. But this filter also gives the entire picture a soft look. Sometimes they have a dog at home, when friends are on vacation. In this picture, Niño can (barely) be seen laying in the shadow. This picture really shows the peaceful atmosphere that&#8217;s there.</p>
<p><a href="http://janpaulposma.nl/wp-content/uploads/2011/01/Scan-1.jpg" class="lightbox"><img src="http://janpaulposma.nl/wp-content/uploads/2011/01/Scan-1-300x200.jpg" width="300" height="200" class="alignnone size-medium wp-image-498" /></a></p>
<p>I like this picture because it shows a typical state of my desk. I&#8217;ve used a bit of overexposure, so that the notebook is shown correctly, and everything else is brighter, which looks quite interesting!</p>
<p><a href="http://janpaulposma.nl/wp-content/uploads/2011/01/Scan-2.jpg" class="lightbox"><img src="http://janpaulposma.nl/wp-content/uploads/2011/01/Scan-2-300x208.jpg" width="300" height="208" class="alignnone size-medium wp-image-499" /></a></p>
<p>This one is the coolest picture I&#8217;ve taken so far! Using only a briefcase to support the camera, and an extended shutter button, the timing here is remarkable. A few cars that were very similar approached me, so there is only one very bright line visible. I was also very lucky there was no traffic in the other direction, because now the background is very dark, which is in great contrast with the line. If there was traffic in the other direction, their headlights would&#8217;ve enlightened the background. The fact that it rains adds to the atmosphere by having great reflections on the ground.</p>
<p><a href="http://janpaulposma.nl/wp-content/uploads/2011/01/Scan-3.jpg" class="lightbox"><img src="http://janpaulposma.nl/wp-content/uploads/2011/01/Scan-3-300x208.jpg" width="300" height="208" class="alignnone size-medium wp-image-500" /></a></p>
<p>This is a simple photograph of my friend Hans, but I really liked the colour contrast. He has a nice expression on his face, and the background is just right. Simply a decent picture.</p>
<p><a href="http://janpaulposma.nl/wp-content/uploads/2011/01/Scan-4.jpg" class="lightbox"><img src="http://janpaulposma.nl/wp-content/uploads/2011/01/Scan-4-300x207.jpg" width="300" height="207" class="alignnone size-medium wp-image-501" /></a></p>
<p>This one has, again, been taken at my parents&#8217; home, and I like the natural chaos that is displayed. A Harry Potter book on the table, some pillows missing or not straightened, the shadows falling in a weird way. It&#8217;s just how things are, nothing more, nothing less.</p>
<p><a href="http://janpaulposma.nl/wp-content/uploads/2011/01/Scan-5.jpg" class="lightbox"<img src="http://janpaulposma.nl/wp-content/uploads/2011/01/Scan-5-300x208.jpg" width="300" height="208" class="alignnone size-medium wp-image-502" /></a></p>
<p>This is an interesting one, because it took a while to get it right. I noticed this bike before my house, and immediately thought about photographing it. The problem is, there are only a few moments each year, in the summer, when the sun is actually in the right position. I had to wait a few weeks, and when the moment was there, I took a few shots. Luckily it was a beautiful day, and the rusted bike with the grass growing through it, in combination with the awesome perspective, makes this one of my favourite pictures so far.</p>
<p><a href="http://janpaulposma.nl/wp-content/uploads/2011/01/Scan-6.jpg" class="lightbox"><img src="http://janpaulposma.nl/wp-content/uploads/2011/01/Scan-6-300x208.jpg" width="300" height="208" class="alignnone size-medium wp-image-503" /></a></p>
<p>Because of the weird angle my dad&#8217;s lower leg is making, I wasn&#8217;t quite sure whether to publish this picture. Still, nothing can be totally perfect, and while this is one has great timing, a great expression and good lightning, the imperfections are what make it worthwhile to look at. The ball is mid-air, almost impossible to spot against the white background.</p>
<p><a href="http://janpaulposma.nl/wp-content/uploads/2011/01/Scan-7.jpg" class="lightbox"><img src="http://janpaulposma.nl/wp-content/uploads/2011/01/Scan-7-300x207.jpg" width="300" height="207" class="alignnone size-medium wp-image-504" /></a></p>
<p>You might see a pattern of organised chaos emerging, and maybe that is the case. But I like this one most because it reminds me of the cool times at <a href="/a-little-about-science-center-noord">SCN</a>. Experimenting with electronics is inherently chaotic.</p>
<p><a href="http://janpaulposma.nl/wp-content/uploads/2011/01/Scan-8.jpg" class="lightbox"><img src="http://janpaulposma.nl/wp-content/uploads/2011/01/Scan-8-218x300.jpg" width="218" height="300" class="alignnone size-medium wp-image-505" /></a></p>
<p>When I was in Washington, D.C. for a conference, I took many pictures at night while touring the city. Most of them were miserable failures, but this one was unexpectedly great. This is one of the few pictures that looks way better in real life, as it was impossible to scan the moon properly.</p>
<p><a href="http://janpaulposma.nl/wp-content/uploads/2011/01/Scan-9.jpg" class="lightbox"><img src="http://janpaulposma.nl/wp-content/uploads/2011/01/Scan-9-300x211.jpg" width="300" height="211" class="alignnone size-medium wp-image-506" /></a></p>
<p>A classic airport picture: I couldn&#8217;t let the moment pass! The huge amount of air and clouds in this photograph adds to a sense of space, which in this case I&#8217;d argue to be a good thing.</p>
<p><a href="http://janpaulposma.nl/wp-content/uploads/2011/01/Scan-10.jpg" class="lightbox"><img src="http://janpaulposma.nl/wp-content/uploads/2011/01/Scan-10-300x211.jpg" width="300" height="211" class="alignnone size-medium wp-image-507" /></a></p>
<p>Decorating the Christmas tree! This one has been taken with a star filter, and with a shutter time of several seconds.</p>
]]></content:encoded>
			<wfw:commentRss>http://janpaulposma.nl/analog-highlights-of-2010/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Simple home automation system</title>
		<link>http://janpaulposma.nl/simple-home-automation-system</link>
		<comments>http://janpaulposma.nl/simple-home-automation-system#comments</comments>
		<pubDate>Thu, 11 Mar 2010 18:09:39 +0000</pubDate>
		<dc:creator>JP</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://janpaulposma.nl/?p=430</guid>
		<description><![CDATA[Last time I talked about my photoframe and room control setup. It was a laptop modification, and some hacking around in cheap remote controlled switches and simple scripts. I rebuilt most of the system now: a silent PC with normal screen serves the photos, it can control the lights and devices using a commercial product, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://janpaulposma.nl/photoframe">Last time</a> I talked about my photoframe and room control setup. It was a laptop modification, and some hacking around in cheap remote controlled switches and simple scripts. I rebuilt most of the system now: a silent PC with normal screen serves the photos, it can control the lights and devices using a commercial product, there are cameras in the room and on the street, it&#8217;s all being shown and controlled by a slick webinterface, and my grandparents are quite happy with my old photoframe in their living room. :-)</p>
<p><img src="http://janpaulposma.nl/wp-content/uploads/2010/03/IMG_0001-300x224.jpg" alt="New setup" title="New setup" width="300" height="224" class="alignnone size-medium wp-image-431" /></p>
<p><span id="more-430"></span></p>
<p>Let&#8217;s get into details! The system is running on <a href="http://www.aleutia.com/products/t1">Aleutia T1</a>, which is a really nice, silent PC-ish thing. PC-ish, because the performance is not really up to todays standards, but on the other hand it&#8217;s quite cheap, really silent and comes pre-installed with Ubuntu. Cool! <span style="font-size: 80%; color: #AAA">(However, I installed Windows XP&#8230;)</span> I got mine with a <abbr title="Solid State Drive">SSD</abbr>, which means that there are no moving parts whatsoever, therefore it can stay on 24/7.</p>
<p>Using a simple <a href="http://www.apachefriends.org/en/xampp.html">XAMPP</a> setup, it runs my photoframed software mentioned in the previous post (<a href="http://janpaulposma.nl/photoframed">demo</a>, <a href="http://github.com/janpaul123/photoframed">source</a>).</p>

<a href='http://janpaulposma.nl/simple-home-automation-system-photos-photoframe/img_0002' title='Photoframed software'><img width="150" height="111" src="http://janpaulposma.nl/wp-content/uploads/2010/03/IMG_0002-150x111.jpg" class="attachment-thumbnail" alt="Photoframed software" title="Photoframed software" /></a>
<a href='http://janpaulposma.nl/simple-home-automation-system-photos-photoframe/img_0001-2' title='Current setup'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/03/IMG_00011-150x112.jpg" class="attachment-thumbnail" alt="Current setup" title="Current setup" /></a>
<a href='http://janpaulposma.nl/simple-home-automation-system-photos-photoframe/img_0010' title='Webcams'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/03/IMG_0010-150x112.jpg" class="attachment-thumbnail" alt="Webcams" title="Webcams" /></a>
<a href='http://janpaulposma.nl/simple-home-automation-system-photos-photoframe/img_0008' title='Aleutia T1'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/03/IMG_0008-150x112.jpg" class="attachment-thumbnail" alt="Aleutia T1" title="Aleutia T1" /></a>

<p>The webcam setup is quite interesting. First I tried to plug the webcams using some <abbr title="Universal Serial Bus">USB</abbr> extension cords. It was highly unstable, so now the PC is actually positioned in a cardboard box, lifted from the ground, so all the cables fit exactly.</p>
<p>Another issue with the webcams is having it stream, but also have it stream securely. A promising format seemed to be <abbr title="Motion JPEG">MJPEG</abbr>: this is just like sending out JPEG frames as fast as the connection can manage. I run the following code to generate a MJPEG stream using <abbr title="VideoLan Client">VLC</abbr>. The stream is only accessible from localhost for security reasons.</p>
<p><code><br />
vlc.exe dshow:// :dshow-vdev="USB Video Device"    :dshow-adev=none :dshow-size=640x480 --no-sout-audio --sout=#transcode{vcodec=mjpg, vb=512, fps=1, width=640, height=480}:standard{access=http{mime="multipart/x-mixed-replace; boundary=7b3cc56e5f51db803f790dad720ed50a"}, mux=mpjpeg, dst=127.0.0.1:8080/cam.mjpg}<br />
</code></p>
<p>The boundary thing is a code required for modern browsers to correctly recognize the data type. If you remove the IP-address at the end, you&#8217;ll allow anyone to watch the stream. Now the next proxy is to make sure only authenticated people are able to see the stream. I tried this using a PHP script which simply read the stream and echo&#8217;ed it (and some other variants). I also tried using the Apache proxy module. But both options have the same problem: as I have a terrible internet connection, I really need the last frame. Once a frame is transmitted, the new frame must be the most recent frame possible. However, all options I tried seem to cache the data, so you&#8217;ll see 1 second of recording spread out on, like, half a minute on the client.</p>
<p>In the end I just went with a simple script I found online somewhere, that reads exactly one MJPEG frame and spits it out as ordinary JPEG:</p>
<p><code><br />
$boundary="\n--";</p>
<p>$f = fopen($_GET['url'],"r") ;</p>
<p>if($f)<br />
{<br />
        while (substr_count($r,"Content-Length") != 2) $r.=fread($f,512);</p>
<p>        $start = strpos($r,'Ø');<br />
        $end   = strpos($r,$boundary,$start)-1;<br />
        $frame = substr("$r",$start,$end - $start);</p>
<p>        header("Content-type: image/jpeg");<br />
        echo $frame;<br />
}</p>
<p>fclose($f);<br />
</code></p>
<p>Now you have to refresh the image using for example Javascript, so that&#8217;s fine too. The webinterface I&#8217;ve written for this purpose also features a slider to set refresh interval, which is pretty handy if you&#8217;ve got a shitty connection like myself. Also, this brings me to the home automation part, which is actually pretty brief. All devices in my room are plugged into a <a href="http://klikaanklikuit.nl">KlikAanKlikUit</a> unit, and the PC&#8217;s got a <a href="http://klikaanklikuit.nl/product_detail.asp?id=25">TPC-200</a> interface plugged in, and a little bit of software does the trick (<a href="http://janpaulposma.nl/kakurc">demo</a>, <a href="http://github.com/janpaul123/kakurc">source</a>).</p>
<p>The TPC-200 interface comes with a <abbr title="Dynamic Link Library">DLL</abbr> which has one single command: <em>Send(id, value)</em>, with <em>id</em> being an integer and <em>value</em> a boolean. A simple executable wrapper, hacked together in <abbr title="Visual Basic">VB</abbr>, makes it easy to send commands from PHP, using <em>exec</em>.</p>

<a href='http://janpaulposma.nl/simple-home-automation-system-photos-webcams/mac_screenshot' title='Room control interface'><img width="150" height="84" src="http://janpaulposma.nl/wp-content/uploads/2010/03/mac_screenshot-150x84.png" class="attachment-thumbnail" alt="Room control interface" title="Room control interface" /></a>
<a href='http://janpaulposma.nl/simple-home-automation-system-photos-webcams/img_0003' title='Webcam inside'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/03/IMG_0003-150x112.jpg" class="attachment-thumbnail" alt="Webcam inside" title="Webcam inside" /></a>
<a href='http://janpaulposma.nl/simple-home-automation-system-photos-webcams/img_0005' title='Webcam outside'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/03/IMG_0005-150x112.jpg" class="attachment-thumbnail" alt="Webcam outside" title="Webcam outside" /></a>

<p>The first room control breach has happened already: I used the inferior Apache Basic Authentication for the login procedure, and it turns out that sessions can keep open for a long period of time. Even when the server restarts during that time. I logged on the system on the laptop of a friend of mine, and 3 days later, he scared the crap out of me by playing with my lights. ;-) The PC restarts every night at 5am, so I&#8217;m still amazed that the session lasted that long. </p>
<p>Anyway, I quickly tracked him down using the access logs and we had a good laugh about it, but I still don&#8217;t trust the security anymore: the inside camera is pointed at the ceiling now&#8230; <abbr title="Secure Sockets Layer">SSL</abbr> and stuff like that will probably be secure enough, but if you&#8217;re considering building the same setup, don&#8217;t plug in your nuclear power plant.</p>
]]></content:encoded>
			<wfw:commentRss>http://janpaulposma.nl/simple-home-automation-system/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Photoframe(d)</title>
		<link>http://janpaulposma.nl/photoframe</link>
		<comments>http://janpaulposma.nl/photoframe#comments</comments>
		<pubDate>Mon, 18 Jan 2010 00:05:17 +0000</pubDate>
		<dc:creator>JP</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://janpaulposma.nl/?p=306</guid>
		<description><![CDATA[In 2007 I decided it would be cool to build a digital photo frame, out of a broken laptop. I bought the laptop from a friend of mine, as it was pretty old and useless, considering the keyboard didn&#8217;t work. With some help of my grandpa and his tools, I built it. Later, I added [...]]]></description>
			<content:encoded><![CDATA[<p>In 2007 I decided it would be cool to build a digital photo frame, out of a broken laptop. I bought the laptop from a <a href="http://www.brouwer-varenhorst.nl">friend</a> of mine, as it was pretty old and useless, considering the keyboard didn&#8217;t work. With some help of my grandpa and his tools, I built it. Later, I added speech recognition and control of the lights in my room. </p>
<p>Most of the original source code is lost, and the system doesn&#8217;t work well anymore, so I&#8217;m redesigning it. In a few months you can expect another blog post on this, but I thought a writeup of the old design would be nice.</p>
<p><img src="http://janpaulposma.nl/wp-content/uploads/2010/01/IMG_0104-300x225.jpg" alt="Photoframe" title="Photoframe" width="300" height="225" class="alignnone size-medium wp-image-307" /></p>
<p><span id="more-306"></span></p>
<p>It started with an old laptop. In an impulse I decided to see how quickly I was able to strip it until only the bare essentials were left. It was quite easy to disassemble it, and the wires were long enough to separate the display from the other components.</p>

<a href='http://janpaulposma.nl/photoframed-photos-laptop/dsc00222' title='Removed some casings'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00222-150x112.jpg" class="attachment-thumbnail" alt="Removed some casings" title="Removed some casings" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-laptop/dsc00223' title='Different components'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00223-150x112.jpg" class="attachment-thumbnail" alt="Different components" title="Different components" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-laptop/dsc00224' title='Disassembled!'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00224-150x112.jpg" class="attachment-thumbnail" alt="Disassembled!" title="Disassembled!" /></a>

<p>Once the laptop was disassembled, it was easy enough to go to the DIY store and buy some materials. With some careful measuring, patience and painting twice, the job was done in a few evenings.</p>

<a href='http://janpaulposma.nl/photoframed-photos-building-the-frame/dsc00225' title='Assembling the casing'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00225-150x112.jpg" class="attachment-thumbnail" alt="Assembling the casing" title="Assembling the casing" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-building-the-frame/dsc00227' title='Assembling the casing'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00227-150x112.jpg" class="attachment-thumbnail" alt="Assembling the casing" title="Assembling the casing" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-building-the-frame/dsc00228' title='Assembling the casing'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00228-150x112.jpg" class="attachment-thumbnail" alt="Assembling the casing" title="Assembling the casing" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-building-the-frame/dsc00231' title='Assembling the casing'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00231-150x112.jpg" class="attachment-thumbnail" alt="Assembling the casing" title="Assembling the casing" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-building-the-frame/dsc00232' title='Assembling the casing'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00232-150x112.jpg" class="attachment-thumbnail" alt="Assembling the casing" title="Assembling the casing" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-building-the-frame/dsc00233' title='The screen fits!'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00233-150x112.jpg" class="attachment-thumbnail" alt="The screen fits!" title="The screen fits!" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-building-the-frame/dsc00234' title='Adding the borders'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00234-150x112.jpg" class="attachment-thumbnail" alt="Adding the borders" title="Adding the borders" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-building-the-frame/dsc00235' title='Adding the borders'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00235-150x112.jpg" class="attachment-thumbnail" alt="Adding the borders" title="Adding the borders" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-building-the-frame/dsc00236' title='First paintjob'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00236-150x112.jpg" class="attachment-thumbnail" alt="First paintjob" title="First paintjob" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-building-the-frame/dsc00238' title='First paintjob'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00238-150x112.jpg" class="attachment-thumbnail" alt="First paintjob" title="First paintjob" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-building-the-frame/dsc00239' title='Flattening the surface'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00239-150x112.jpg" class="attachment-thumbnail" alt="Flattening the surface" title="Flattening the surface" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-building-the-frame/dsc00240' title='Second paintjob'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00240-150x112.jpg" class="attachment-thumbnail" alt="Second paintjob" title="Second paintjob" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-building-the-frame/dsc00241' title='Assembling internals'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00241-150x112.jpg" class="attachment-thumbnail" alt="Assembling internals" title="Assembling internals" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-building-the-frame/dsc00248' title='Assembling internals'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00248-150x112.jpg" class="attachment-thumbnail" alt="Assembling internals" title="Assembling internals" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-building-the-frame/dsc00249' title='Assembling internals'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00249-150x112.jpg" class="attachment-thumbnail" alt="Assembling internals" title="Assembling internals" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-building-the-frame/dsc00243' title='It works!'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00243-150x112.jpg" class="attachment-thumbnail" alt="It works!" title="It works!" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-building-the-frame/dsc00244' title='It works!'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00244-150x112.jpg" class="attachment-thumbnail" alt="It works!" title="It works!" /></a>

<p>To display the photos, a clock, and some RSS feeds, I used a <a href="http://gathering.tweakers.net/forum/list_message/27709204#27709204">PHP script</a> by <a href="http://tommy.ech-wel.nl/vaio-fotolijst">Tommy van der Vorst</a>, running in a fullscreen Firefox window. It worked pretty well. After some modifications, it was used by myself and others for 3 years.</p>

<a href='http://janpaulposma.nl/photoframed-photos-script-by-misterdata/dsc00245' title='The script'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00245-150x112.jpg" class="attachment-thumbnail" alt="The script" title="The script" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-script-by-misterdata/dsc00246' title='The script'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00246-150x112.jpg" class="attachment-thumbnail" alt="The script" title="The script" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-script-by-misterdata/dsc00247' title='The script'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00247-150x112.jpg" class="attachment-thumbnail" alt="The script" title="The script" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-script-by-misterdata/dsc00258' title='The script'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00258-150x112.jpg" class="attachment-thumbnail" alt="The script" title="The script" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-script-by-misterdata/dsc00257' title='The script'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00257-150x112.jpg" class="attachment-thumbnail" alt="The script" title="The script" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-script-by-misterdata/dsc00256' title='The script'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00256-150x112.jpg" class="attachment-thumbnail" alt="The script" title="The script" /></a>

<p>A few months later I stumbled upon <a href="http://gathering.tweakers.net/forum/list_messages/1077675">this post</a> on a forum, which describes how to easily hack a cheap home automation remote control to hook it up to a computer. There were sets available for about €20 to control lights and devices with a remote control. So I bought two of these sets. The first hack was to hook it up to ordinary lights that are directly connected to a power source, without a wall socket in between. The setup wasn&#8217;t very safe, but it worked.</p>

<a href='http://janpaulposma.nl/photoframed-photos-receiver-hacks/dsc00259' title='A receiver'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00259-150x112.jpg" class="attachment-thumbnail" alt="A receiver" title="A receiver" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-receiver-hacks/dsc00262' title='Receiver, disassembled'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00262-150x112.jpg" class="attachment-thumbnail" alt="Receiver, disassembled" title="Receiver, disassembled" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-receiver-hacks/dsc00264' title='Original wiring'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00264-150x112.jpg" class="attachment-thumbnail" alt="Original wiring" title="Original wiring" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-receiver-hacks/dsc00265' title='Wiring with receiver'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00265-150x112.jpg" class="attachment-thumbnail" alt="Wiring with receiver" title="Wiring with receiver" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-receiver-hacks/dsc00267' title='It works!'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00267-150x112.jpg" class="attachment-thumbnail" alt="It works!" title="It works!" /></a>

<p>Next, I followed the instructions on the forum post: hook up the remote control to the serial port, detect commands using <a href="http://www.lirc.org/">LIRC</a>, and send them back to the remote control. It worked fine on the computer, but the problem is that on laptops the serial port is weaker: it usually won&#8217;t give a <a href="http://hackaday.com/2007/05/19/serial-port-power-booster/">nice and strong 12 volt signal</a>.</p>

<a href='http://janpaulposma.nl/photoframed-photos-serial-hack/dsc00268' title='Remote control'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00268-150x112.jpg" class="attachment-thumbnail" alt="Remote control" title="Remote control" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-serial-hack/dsc00271' title='Remote control, disassembled'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00271-150x112.jpg" class="attachment-thumbnail" alt="Remote control, disassembled" title="Remote control, disassembled" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-serial-hack/dsc00272' title='Original wiring'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00272-150x112.jpg" class="attachment-thumbnail" alt="Original wiring" title="Original wiring" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-serial-hack/dsc00278' title='Added sending and receiving wiring'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00278-150x112.jpg" class="attachment-thumbnail" alt="Added sending and receiving wiring" title="Added sending and receiving wiring" /></a>
<a href='http://janpaulposma.nl/photoframed-photos-serial-hack/dsc00277' title='Signal on the scope'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2010/01/DSC00277-150x112.jpg" class="attachment-thumbnail" alt="Signal on the scope" title="Signal on the scope" /></a>

<p>The solution was rather simple: by hooking up transistors to every button, you can simulate a press of that button simply by putting a small voltage on the transistor. The easiest way to do this is by using the parallel port. Fortunately, the laptop was pretty old so this was no problem.</p>
<p><img src="http://janpaulposma.nl/wp-content/uploads/2010/01/IMG_0186-300x225.jpg" alt="Transistor hack" title="Transistor hack" width="300" height="225" class="alignnone size-medium wp-image-409" /></p>
<p>With some Visual Basic programming, the <a href="http://www.microsoft.com/speech/default.aspx">Microsoft Speech API</a> and some PHP scripts it was possible to control the lights by voice and over the internet. Which is pretty cool. Unfortunately, I lost most of the source code, so I won&#8217;t be able to share it here. Right now I&#8217;m building a new version, and when it&#8217;s done I&#8217;ll share the code!</p>
<p>For now, I&#8217;ve started <a href="http://janpaulposma.nl/photoframed">improving</a> the PHP script that shows the photos, which I&#8217;ve dubbed <em>photoframed</em>. It&#8217;s pretty nice already, you can download and contribute to it on <a href="http://github.com/janpaul123/photoframed">my github page</a>. It even works perfectly fine in an iframe like the one below.</p>
<p><iframe src="http://janpaulposma.nl/photoframed" width="600" height="450"></iframe></p>
<p>In a few months the new system should be up and running, so I&#8217;ll probably write another blog post then. Meanwhile, I invite everyone to look at the source code of photoframed and contribute. Or you can just leave a message in the form below. ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://janpaulposma.nl/photoframe/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Last day of school, in 2008</title>
		<link>http://janpaulposma.nl/lsd-2008</link>
		<comments>http://janpaulposma.nl/lsd-2008#comments</comments>
		<pubDate>Wed, 02 Dec 2009 18:37:25 +0000</pubDate>
		<dc:creator>JP</dc:creator>
				<category><![CDATA[Art]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://janpaulposma.nl/?p=281</guid>
		<description><![CDATA[On the last day of the school year it is common practice in the Netherlands that the building is transformed by the graduate students. There is a theme that has been kept secret for months, and an afternoon show to amuse the fellow students and teachers, usually with some pranks on the latter. In 2008 [...]]]></description>
			<content:encoded><![CDATA[<p>On the last day of the school year it is common practice in the Netherlands that the building is transformed by the graduate students. There is a theme that has been kept secret for months, and an afternoon show to amuse the fellow students and teachers, usually with some pranks on the latter. </p>
<p><span id="more-281"></span></p>
<p>In 2008 our class graduated, and we decided to hold a hippie festival. Unfortunately, it wasn&#8217;t as popular as Woodstock about forty years earlier, but still it was totally awesome! A few weeks ago I found all the video material of that day and decided to make a compilation. The first video is about the morning, giving an impression of the great atmosphere in the school. The second video is the show, which is entirely in Dutch.</p>
<p><object width="490" height="276"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7615020&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=7615020&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="490" height="276"></embed></object></p>
<p><object width="490" height="276"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7804421&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=7804421&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="490" height="276"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://janpaulposma.nl/lsd-2008/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Balloon molecules: balloon art for geeks</title>
		<link>http://janpaulposma.nl/balloon-molecules-balloon-art-for-geeks</link>
		<comments>http://janpaulposma.nl/balloon-molecules-balloon-art-for-geeks#comments</comments>
		<pubDate>Tue, 15 Sep 2009 13:48:23 +0000</pubDate>
		<dc:creator>JP</dc:creator>
				<category><![CDATA[Art]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://janpaulposma.nl/?p=131</guid>
		<description><![CDATA[You probably know balloon art: done by magicians or clowns, on the street or at children&#8217;s parties. Some german guys have taken it to the next level. They thought visualizing the structure of complex molecules would be an excellent job for the famous balloon. In my final year at high school we made some balloon [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://janpaulposma.nl/wp-content/uploads/2009/09/DSC00285-300x225.jpg" alt="Little brother with multi-color buckyball" title="Little brother with multi-color buckyball" width="300" height="225" class="alignnone size-medium wp-image-134" /></p>
<p>You probably know balloon art: done by magicians or clowns, on the street or at children&#8217;s parties. Some <a href="http://www.balloonmolecules.com/">german guys</a> have taken it to the next level. They thought visualizing the structure of complex molecules would be an excellent job for the famous balloon.</p>
<p><span id="more-131"></span></p>
<p>In my final year at high school we made some balloon molecules, and our chemistry teacher absolutely loved it. So here are some hints if you want to do it too:</p>
<ul>
<li><strong>Use a balloon-pump!</strong> You have to blow up <em>so</em> many balloons, you&#8217;ll get completely exhausted when not using a pump. </li>
<li><strong>Get enough balloons of the same color!</strong> Check out the photos, our first model looked more like a rainbow than an actual <a href="http://en.wikipedia.org/wiki/Fullerene">buckyball</a>.</li>
<li><strong>Learn the knots and techniques and practice them!</strong> We had a lot of balloons popping because we didn&#8217;t know how to do balloon art exactly. There are excellent guidelines on how to do the knots and techniques on the site of the <a href="http://www.balloonmolecules.com/">professionals</a>.</li>
<li><strong>Have lots of fun!!</strong></li>
</ul>

<a href='http://janpaulposma.nl/balloon-molecules-balloon-art-for-geeks/dsc00285' title='Little brother with multi-color buckyball'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2009/09/DSC00285-150x112.jpg" class="attachment-thumbnail" alt="Little brother with multi-color buckyball" title="Little brother with multi-color buckyball" /></a>
<a href='http://janpaulposma.nl/balloon-molecules-balloon-art-for-geeks/dsc00282' title='Little brother with multi-color buckyball'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2009/09/DSC00282-150x112.jpg" class="attachment-thumbnail" alt="Little brother with multi-color buckyball" title="Little brother with multi-color buckyball" /></a>
<a href='http://janpaulposma.nl/balloon-molecules-balloon-art-for-geeks/dsc00283' title='Little brother with multi-color buckyball'><img width="112" height="150" src="http://janpaulposma.nl/wp-content/uploads/2009/09/DSC00283-112x150.jpg" class="attachment-thumbnail" alt="Little brother with multi-color buckyball" title="Little brother with multi-color buckyball" /></a>
<a href='http://janpaulposma.nl/balloon-molecules-balloon-art-for-geeks/dsc00288' title='Multi-color buckyball on the piano'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2009/09/DSC00288-150x112.jpg" class="attachment-thumbnail" alt="Multi-color buckyball on the piano" title="Multi-color buckyball on the piano" /></a>
<a href='http://janpaulposma.nl/balloon-molecules-balloon-art-for-geeks/dsc00290' title='Graphite'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2009/09/DSC00290-150x112.jpg" class="attachment-thumbnail" alt="Graphite" title="Graphite" /></a>
<a href='http://janpaulposma.nl/balloon-molecules-balloon-art-for-geeks/dsc00291' title='Building a buckyball'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2009/09/DSC00291-150x112.jpg" class="attachment-thumbnail" alt="Building a buckyball" title="Building a buckyball" /></a>
<a href='http://janpaulposma.nl/balloon-molecules-balloon-art-for-geeks/dsc00295' title='Teacher with the buckyball'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2009/09/DSC00295-150x112.jpg" class="attachment-thumbnail" alt="Teacher with the buckyball" title="Teacher with the buckyball" /></a>
<a href='http://janpaulposma.nl/balloon-molecules-balloon-art-for-geeks/dsc00292' title='Teacher with the buckyball'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2009/09/DSC00292-150x112.jpg" class="attachment-thumbnail" alt="Teacher with the buckyball" title="Teacher with the buckyball" /></a>
<a href='http://janpaulposma.nl/balloon-molecules-balloon-art-for-geeks/dsc00298' title='It&#039;s science!'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2009/09/DSC00298-150x112.jpg" class="attachment-thumbnail" alt="It&#039;s science!" title="It&#039;s science!" /></a>

]]></content:encoded>
			<wfw:commentRss>http://janpaulposma.nl/balloon-molecules-balloon-art-for-geeks/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PimpMyBike: biking at night &#8211; with style</title>
		<link>http://janpaulposma.nl/pimpmybike-biking-at-night-with-style</link>
		<comments>http://janpaulposma.nl/pimpmybike-biking-at-night-with-style#comments</comments>
		<pubDate>Thu, 10 Sep 2009 20:40:43 +0000</pubDate>
		<dc:creator>JP</dc:creator>
				<category><![CDATA[Art]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[SCN]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://janpaulposma.nl/?p=48</guid>
		<description><![CDATA[One of the coolest projects I have worked on resulted in the turning of heads when biking through the city, and was also a great challenge as it involves some tricky hardware and software. The result was pretty darn amazing though. So this was a really cool project that took a lot of my time [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://janpaulposma.nl/wp-content/uploads/2009/09/DSC_0042-300x199.jpg" alt="Nice." title="Nice." width="300" height="199" class="alignnone size-medium wp-image-99" /></p>
<p>One of the coolest projects I have worked on resulted in the turning of heads when biking through the city, and was also a great challenge as it involves some tricky hardware and software. The result was pretty darn amazing though.</p>
<p><span id="more-48"></span></p>
<p>So this was a really cool project that took a lot of my time when I was seventeen years old. Do you know <a href="http://www.thinkgeek.com/gadgets/lights/81ff/">these</a> <a href="http://www.youtube.com/watch?v=gklBWwGyreM">gadgets</a> that write text in the air? Ever wondered how they work?</p>
<p>It&#8217;s pretty simple, actually. There is a row of <acronym title="light emitting diode">LED</acronym>-lights that you swing through the air. Those leds alternate very quickly between on and off, in a very specific pattern. When you move the leds at exactly the right velocity, the pattern will become visible to the human eye, and you can actually read text or see an image.</p>
<p>You are able to see this text because your mind will stitch the images together, like when watching TV. It all happens so fast, that you won&#8217;t see the individual frames, but you see the image as a whole. Or in case of the TV, it looks like you&#8217;re watching an actual moving scene. This phenomena is called <a href="http://en.wikipedia.org/wiki/Persistence_of_vision">Persistence of Vision</a> (POV), and quite useful when making awesome things. :-)</p>
<p>In theory it&#8217;s possible to attach a row of leds to the side your bike, and get the same effect as swinging it through the air. The problem with that is that you have to go fast. Very, very fast. Instead, there is something on the bike that has a much higher velocity than your forward velocity: the angular velocity of the weels.</p>
<p>Depending on the size of the weel and your forward velocity, you&#8217;ll get a fair number of rotations per second, enough to make it blurry to the eye. So why not take the row of leds, and put it in the wheel. Sure, you have to do some funky math to get a nice image, but it looks cool, right?!</p>
<p>But of course, it already exists: <a href="http://www.ladyada.net/make/spokepov/">SpokePOV</a> by the artist/engineer <a href="http://ladyada.net/">Ladyada</a> (who, by the way, makes very cool things!). Lucky for me, those kits only come in one color. What could be cooler than making a full-color SpokePOV?</p>
<p>After carefully selecting parts &#8211; <abbr title="red, green, blue">RGB</abbr>-leds are expensive! &#8211; the drawing began. For this I usually use <a href="http://www.lis.inpg.fr/realise_au_lis/kicad/">KiCAD</a>, an awesome open-source electronics <acronym title="computer-aided design">CAD</acronym> program. </p>
<p>Designing the circuit board was a devilish job. The routing of all the lines to the leds took a lot of time to perfect, not to mention fitting it on a board that is as small as possible. A cool thing about Kicad is that you have an awesome 3d viewer. But a 3d model with missing components kinda sucks, so I drew a few models myself in <a href="http://en.wikipedia.org/wiki/Autodesk_3ds_Max">3ds Max</a>.</p>

<a href='http://janpaulposma.nl/pimpmybike-photos-schematics/prototype-1-schematic' title='Schematic'><img width="150" height="105" src="http://janpaulposma.nl/wp-content/uploads/2009/09/Prototype-1-Schematic-150x105.png" class="attachment-thumbnail" alt="Schematic" title="Schematic" /></a>
<a href='http://janpaulposma.nl/pimpmybike-photos-schematics/prototype-1-sheet' title='Sheet design'><img width="54" height="150" src="http://janpaulposma.nl/wp-content/uploads/2009/09/Prototype-1-Sheet-54x150.png" class="attachment-thumbnail" alt="Sheet design" title="Sheet design" /></a>
<a href='http://janpaulposma.nl/pimpmybike-photos-schematics/prototype-1-3d-model' title='3d model'><img width="60" height="150" src="http://janpaulposma.nl/wp-content/uploads/2009/09/Prototype-1-3d-model-60x150.PNG" class="attachment-thumbnail" alt="3d model" title="3d model" /></a>

<p>All that done, the schematics were sent to Niels at <a href="http://makepcb.com/">MakePCB</a>, who also supplied most of the components. And how awesome, a few weeks later an envelope with the circuit boards arrived. A few hours of soldering later, and the hardware was finished.</p>

<a href='http://janpaulposma.nl/pimpmybike-photos-boards/dsc00317' title='Circuit board'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2009/09/DSC00317-150x112.jpg" class="attachment-thumbnail" alt="Circuit board" title="Circuit board" /></a>
<a href='http://janpaulposma.nl/pimpmybike-photos-boards/dsc00319' title='Circuit board'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2009/09/DSC00319-150x112.jpg" class="attachment-thumbnail" alt="Circuit board" title="Circuit board" /></a>
<a href='http://janpaulposma.nl/pimpmybike-photos-boards/dsc00318' title='Closeup'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2009/09/DSC00318-150x112.jpg" class="attachment-thumbnail" alt="Closeup" title="Closeup" /></a>
<a href='http://janpaulposma.nl/pimpmybike-photos-boards/dsc00315' title='Closeup'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2009/09/DSC00315-150x112.jpg" class="attachment-thumbnail" alt="Closeup" title="Closeup" /></a>
<a href='http://janpaulposma.nl/pimpmybike-photos-boards/dsc00322' title='Microcontroller soldering points'><img width="150" height="112" src="http://janpaulposma.nl/wp-content/uploads/2009/09/DSC00322-150x112.jpg" class="attachment-thumbnail" alt="Microcontroller soldering points" title="Microcontroller soldering points" /></a>

<p>But the hardest part was yet to come: the software. Luckily Microchip supplied an excellent USB bootloader, which I tweaked a bit to use the leds as status indicators. The embedded software is all about performance: it has to be able to keep up with the speed of the weel. Therefore it was necessary to supply the program with an image in a format that is easy to decode, and small at the same time.</p>
<p>First, a computer program in Java converted a normal image to a rotational image using some simple trigonometry. Normally, when composing images, pixel data consists of 3 bytes per pixel: one for each color. Uncompressed, this took way too much space for a small <acronym title="Peripheral Interface Controller">PIC</acronym> microcontroller. JPEG or PNG compression was not an option: way to complex to decode. So the color data was reduced to 1 byte per pixel: 3 bits for red, 3 bits for green and 2 bits for blue. Why the reduced count for blue? Well, there are 8 bits to the byte, so some color has to go down, and blue is the best choice as the eye is the least sensitive to that primary color.</p>

<a href='http://janpaulposma.nl/pimpmybike-photos-software/biertje' title='Image (Heineken logo)'><img width="150" height="139" src="http://janpaulposma.nl/wp-content/uploads/2009/09/biertje-150x139.PNG" class="attachment-thumbnail" alt="Image (Heineken logo)" title="Image (Heineken logo)" /></a>
<a href='http://janpaulposma.nl/pimpmybike-photos-software/program' title='Conversion to radial image'><img width="150" height="115" src="http://janpaulposma.nl/wp-content/uploads/2009/09/program-150x115.PNG" class="attachment-thumbnail" alt="Conversion to radial image" title="Conversion to radial image" /></a>
<a href='http://janpaulposma.nl/pimpmybike-photos-software/multiplexing' title='Multiplexing'><img width="150" height="84" src="http://janpaulposma.nl/wp-content/uploads/2009/09/multiplexing-150x84.PNG" class="attachment-thumbnail" alt="Multiplexing" title="Multiplexing" /></a>

<p>To display the colors some standard techniques are used such as <a href="http://jallib.blogspot.com/2009/02/step-by-step-having-fun-with-pwm-and.html">pulse-width modulation</a> (PWM) and LED-multiplexing, which I won&#8217;t cover in detail. However, the decoding of the pixel data to 3 bytes is kinda interesting. The C implementation was too slow, so it had to be done by hand, in assembly. Using assembly for this critical piece of code (which is only a few lines long) improved the speed of the whole program by a factor 6.</p>
<pre name="code">TBLRDPOSTINC
MOVF TABLAT, 0, ACCESS			// Read TABLAT to WREG; WREG = RRRGGGBB
MOVWF CurrentPixel, BANKED		// Put WREG in CP (CurrentPixel)
RLNCF CurrentPixel, 1, BANKED		// Shift CP to left;    WREG = RRGGGBBR
MOVF CurrentPixel, 0, BANKED 		// Put CP in WREG
ANDLW 0x06				// AND WREG with 0x06;  WREG = 00000BB0
MOVWF PWM2_0, BANKED			// Put WREG in blue channel

RLNCF CurrentPixel, 1, BANKED		// Shift CP to left;    CP   = RGGGBBRR
RLNCF CurrentPixel, 1, BANKED		// Shift CP to left;    CP   = GGGBBRRR
MOVF CurrentPixel, 0, BANKED 		// Put CP in WREG
ANDLW 0x07				// AND WREG with 0x07;  WREG = 00000RRR
MOVWF PWM0_0, BANKED			// Put WREG in red channel

RLNCF CurrentPixel, 1, BANKED		// Shift CP to left;    CP   = GGBBRRRG
RLNCF CurrentPixel, 1, BANKED		// Shift CP to left;    CP   = GBBRRRGG
RLNCF CurrentPixel, 1, BANKED		// Shift CP to left;    CP   = BBRRRGGG
MOVF CurrentPixel, 0, BANKED 		// Put CP in WREG
ANDLW 0x07				// AND WREG with 0x07;  WREG = 00000GGG
MOVWF PWM1_0, BANKED			// Put WREG in green channel
</pre>
<p>The algorithm of the program is pretty simple: take the time of one complete cycle (360 degrees). This time is measured by using a magnetic switch, with a magnet on the frame on the bike. The time is divided by 256, and a timer is set to fire a function. This function will take the next pixels, decode the colors for all the leds (on the front and on the back of the device), and feed this color to the leds using <abbr title="pulse-width modulation">PWM</abbr> and multiplexing. Result: people watching you as you go down the street at night. Mission accomplished.</p>

<a href='http://janpaulposma.nl/pimpmybike-biking-at-night-with-style/dsc_0038' title='Two boards mounted'><img width="150" height="99" src="http://janpaulposma.nl/wp-content/uploads/2009/09/DSC_0038-150x99.jpg" class="attachment-thumbnail" alt="Two boards mounted" title="Two boards mounted" /></a>
<a href='http://janpaulposma.nl/pimpmybike-biking-at-night-with-style/dsc_0043' title='Nice.'><img width="150" height="99" src="http://janpaulposma.nl/wp-content/uploads/2009/09/DSC_0043-150x99.jpg" class="attachment-thumbnail" alt="Nice." title="Nice." /></a>
<a href='http://janpaulposma.nl/pimpmybike-biking-at-night-with-style/dsc_0042' title='Nice.'><img width="150" height="99" src="http://janpaulposma.nl/wp-content/uploads/2009/09/DSC_0042-150x99.jpg" class="attachment-thumbnail" alt="Nice." title="Nice." /></a>
<a href='http://janpaulposma.nl/pimpmybike-biking-at-night-with-style/dsc_0041' title='Nice.'><img width="150" height="99" src="http://janpaulposma.nl/wp-content/uploads/2009/09/DSC_0041-150x99.jpg" class="attachment-thumbnail" alt="Nice." title="Nice." /></a>
<a href='http://janpaulposma.nl/pimpmybike-biking-at-night-with-style/dsc_0040' title='Nice.'><img width="150" height="99" src="http://janpaulposma.nl/wp-content/uploads/2009/09/DSC_0040-150x99.jpg" class="attachment-thumbnail" alt="Nice." title="Nice." /></a>
<a href='http://janpaulposma.nl/pimpmybike-biking-at-night-with-style/dsc_0037' title='Funky effect when moving the camera'><img width="150" height="99" src="http://janpaulposma.nl/wp-content/uploads/2009/09/DSC_0037-150x99.jpg" class="attachment-thumbnail" alt="Funky effect when moving the camera" title="Funky effect when moving the camera" /></a>

<p>As you can see on the photos, I ended up mounting two boards on the wheel. Otherwise you had to drive quite fast.. The synchronization of the two boards happens automatically, because they will both align to the magnet. Except when accelerating or slowing down, both boards remain in sync quite well.</p>
<p>I managed to get this project approved as an assignment for school (&#8216;profielwerkstuk&#8217;), so the documentation is quite extensive. It can provide an interesting read if you like to know more about the used components, programs and techniques. You&#8217;ll also read about some major design decisions. It&#8217;s only available in Dutch though.. <a href="http://janpaulposma.nl/wp-content/uploads/2009/09/Profielwerkstuk.pdf">Download</a>.</p>
<p>There are still a few un-soldered boards laying around here, as well as all the hardware designs and software code. However, I won&#8217;t post it here as many things are unfinished and not at all ready for production. Also, the parts are pretty expensive, especially when taking into consideration you need at least two boards per wheel. If you&#8217;re interested though to take this to the next level though, feel free to contact me and we can talk about it. But be warned: a lot of work needs to be done to have it work really well.</p>
<p><strong>Update</strong>: it seems that around the time I built this, <a href="http://www.monkeylectric.com/">some other guys</a> also got the idea and commercialized it. Their simple version does not support images or synchronization of the units, but looks awesome nevertheless. Their pro version is very cool and even supports animations and on-the-fly wireless programming but is priced at thousands of dollars. It seems though, they have done a great job! :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://janpaulposma.nl/pimpmybike-biking-at-night-with-style/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Bloggin&#8217; awai! (and pangrams)</title>
		<link>http://janpaulposma.nl/bloggin-awai-and-pangrams</link>
		<comments>http://janpaulposma.nl/bloggin-awai-and-pangrams#comments</comments>
		<pubDate>Fri, 04 Sep 2009 22:50:46 +0000</pubDate>
		<dc:creator>JP</dc:creator>
				<category><![CDATA[Competitions]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://janpaulposma.nl/?p=6</guid>
		<description><![CDATA[Well, there you have it. I started a blog. Now I think only people who actually have something to say should begin blogging. And I&#8217;m not sure if I&#8217;ve got something to say. So the first few posts will be postings of old projects, for my own reference and to get the hang of it. [...]]]></description>
			<content:encoded><![CDATA[<p>Well, there you have it. I started a blog. Now I think only people who actually have something to say should begin blogging. And I&#8217;m not sure if I&#8217;ve got something to say. So the first few posts will be postings of old projects, for my own reference and to get the hang of it. Maybe you&#8217;ll like it too!</p>
<p>My writing skills are average, as is my knowledge of the English language. So if you have suggestions of any kind, please, don&#8217;t hesitate to leave a comment!</p>
<p>That being said, let&#8217;s look at a fun little project I worked on about two years ago. I had a bet with <a href="http://vlastuin.net">Marcel Vlastuin</a> that I could produce a self-enumerating <a href="http://en.wikipedia.org/wiki/Pangram">pangram</a>. This is an example of such a pangram:</p>
<blockquote><p>This sentence contains three a&#8217;s, one b, three c&#8217;s, two d&#8217;s, thirty three e&#8217;s, seven f&#8217;s, one g, six h&#8217;s, ten i&#8217;s, one j, one k, one l, one m, twenty four n&#8217;s, sixteen o&#8217;s, one p, one q, nine r&#8217;s, twenty six s&#8217;s, seventeen t&#8217;s, five u&#8217;s, five v&#8217;s, four w&#8217;s, four x&#8217;s, four y&#8217;s, and one z.</p></blockquote>
<p><span id="more-6"></span></p>
<p>Pangram, the word coming from the greek <em>pan gramma</em>, literally means &#8220;every letter&#8221;. The best known pangram is without any doubt &#8220;The quick brown fox jumps over the lazy dog&#8221;. But I had to make a self-enumerating one, without doing research to it, and with my name in it.</p>

<a href='http://janpaulposma.nl/bloggin-awai-and-pangrams/pangram-hof' title='The first self-enumerating pangram'><img width="150" height="116" src="http://janpaulposma.nl/wp-content/uploads/2009/09/pangram-hof-150x116.jpg" class="attachment-thumbnail" alt="The first self-enumerating pangram" title="The first self-enumerating pangram" /></a>
<a href='http://janpaulposma.nl/bloggin-awai-and-pangrams/pangram_persian' title='Persian pangram'><img width="150" height="87" src="http://janpaulposma.nl/wp-content/uploads/2009/09/pangram_persian-150x87.png" class="attachment-thumbnail" alt="Persian pangram" title="Persian pangram" /></a>
<a href='http://janpaulposma.nl/bloggin-awai-and-pangrams/pangram-marcel' title='Marcel&#039;s pangram'><img width="150" height="15" src="http://janpaulposma.nl/wp-content/uploads/2009/09/pangram-marcel-150x15.jpg" class="attachment-thumbnail" alt="Marcel&#039;s pangram" title="Marcel&#039;s pangram" /></a>

<p>For this purpose I built a small program that could generate such a pangram. It would take the previous sentence, count the characters and generate a new sentence. When it got the same sentence twice, the job was done. But there was one problem: many times the program would alternate between a small set of sentences, and never get out of this loop. Therefore it was necessary to add a bit of randomness. The original sourcecode was lost when my old laptop crashed, but as I sent Marcel the generated pangrams, they were still in my mailbox! The pangrams are in Dutch.</p>
<blockquote><p>JP vond deze zin, die vier a&#8217;s, twee b&#8217;s, drie c&#8217;s, acht d&#8217;s, zevenenveertig e&#8217;s, drie f&#8217;s, vier g&#8217;s, drie h&#8217;s, zeventien i&#8217;s, drie j&#8217;s, een k, twee l&#8217;s, een m, twintig n&#8217;s, twee o&#8217;s, twee p&#8217;s, een q, acht r&#8217;s, twintig s&#8217;en, vijftien t&#8217;s, een u, elf v&#8217;s, zeven w&#8217;s, een x, een y en zeven z&#8217;s bevat.</p>
<p>Deze voor Marcel gegenereerde zin omvat drie a&#8217;s, een b, twee c&#8217;s, vijf d&#8217;s, eenenvijftig e&#8217;s, zes f&#8217;s, zes g&#8217;s, een h, zeventien i&#8217;s, vier j&#8217;s, een k, vier l&#8217;s, drie m&#8217;s, tweeentwintig n&#8217;s, vier o&#8217;s, een p, een q, tien r&#8217;s, twintig s&#8217;en, elf t&#8217;s, een u, elf v&#8217;s, vijf w&#8217;s, een x, een y en zeven z&#8217;s.</p>
<p>Jan Paul Posma is trots op deze zin omdat die acht a&#8217;s, twee b&#8217;s, drie c&#8217;s, zeven d&#8217;s, negenenveertig e&#8217;s, vier f&#8217;s, tien g&#8217;s, drie h&#8217;s, tweeentwintig i&#8217;s, vijf j&#8217;s, een k, twee l&#8217;s, drie m&#8217;s, negenentwintig n&#8217;s, vijf o&#8217;s, vier p&#8217;s, een q, acht r&#8217;s, zesentwintig s&#8217;en, eenentwintig t&#8217;s, twee u&#8217;s, negen v&#8217;s, negen w&#8217;s, een x, een y en vijf z&#8217;s bevat.</p>
<p>In deze zin staan tien a&#8217;s, twee b&#8217;s, vier c&#8217;s, zeven d&#8217;s, eenenvijftig e&#8217;s, vier f&#8217;s, zeven g&#8217;s, vier h&#8217;s, drieentwintig i&#8217;s, drie j&#8217;s, een k, vier l&#8217;s, een m, achtentwintig n&#8217;s, vier o&#8217;s, twee p&#8217;s, een q, twaalf r&#8217;s, vierentwintig s&#8217;en, achttien t&#8217;s, twee u&#8217;s, elf v&#8217;s, acht w&#8217;s, een x, een y en zes z&#8217;s, en is bovendien door Jan Paul gegenereerd!</p></blockquote>
<p>Thus winning the bet, a fine dinner. Thanks Marcel! I guess that concludes this <em>F1rSt P0st!!!11oneone42</em>, thank you for reading it. :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://janpaulposma.nl/bloggin-awai-and-pangrams/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

