<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 
 <title>Section9 Lab - Benjamin Blundell</title>
 <link href="http://lab.section9.co.uk/atom.xml" rel="self"/>
 <link href="http://www.section9.co.uk"/>
 <updated>2012-05-18T15:42:25+01:00</updated>
 <id>http://www.section9.co.uk/</id>
 <author>
   <name>Benjamin Blundell</name>
   <email>oni@section9.co.uk</email>
 </author>

 
 <entry>
   <title>Coin Vision</title>
   <link href="http://lab.section9.co.uk/2012/05/18/Coin-Vision.html"/>
   <updated>2012-05-18T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2012/05/18/Coin-Vision</id>
   <content type="html">&lt;p&gt;I've been pretty busy with OpenCV these days I have to say. Its been tricky to get to grips with but one thing that helps is having a good project to work on that has simple goals and can help a few people out. I've been looking at coins a lot - why, I can't possibly tell! But nevertheless, it's a thing I'm into.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm6.staticflickr.com/5467/7221567676_f86234b2d1.jpg&quot; alt=&quot;Coin1&quot; /&gt;&lt;/p&gt;

&lt;p&gt;OpenCV has a lovely Python binding which you can build to work on OSX if you are comfortable in working from source. Under OSX Lion you may need to move the cv.so library into your Python path (you can find out where this is by loading python interactive with the &lt;em&gt;-v&lt;/em&gt; switch and take a look at the paths) as the install script didn't do this for me. Once that is in the right place, play around with the examples in the source; they are quite good.&lt;/p&gt;

&lt;p&gt;When it comes to coins, scanning them seems better than using a camera. Holding the lid open gives quite a contrast, with the background turning black as you might imagine. Trying to recognise coins is very tricky and an unsolved problem, but finding the outlines is somewhat easier.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7073/7221569168_20378f8ae0.jpg&quot; alt=&quot;Coin2&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Of course, finding where the shadows are and removing these is a little harder! That said, I do like a challenge. I've done a little work previously on detecting colours on coins as a way of checking denomination but I suspect there are better ways. Using contours and what is known as &lt;em&gt;blob detection&lt;/em&gt; is great so far, especially if you just use one level of hierarchy. I'll post more source code and what not, once I learn more.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7091/7221567328_a314c9d707.jpg&quot; alt=&quot;coin3&quot; /&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Stereo Vision</title>
   <link href="http://lab.section9.co.uk/2012/05/08/StereoVision.html"/>
   <updated>2012-05-08T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2012/05/08/StereoVision</id>
   <content type="html">&lt;p&gt;So what have I been up to these last few months? I've not had a lot of chance to mess around in the graphics domain, largely because I've been working on a large project for The University of Leeds. I've been interested in computer vision for a while and this seemed like a good chance to get to grips with it. Im working on the reconstruction of meshes from multiple camera viewpoints. This leads me into the realms of stereo vision.&lt;/p&gt;

&lt;object width=&quot;480&quot; height=&quot;360&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/7Gx4IRoq1ow?version=3&amp;amp;hl=en_US&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/7Gx4IRoq1ow?version=3&amp;amp;hl=en_US&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;480&quot; height=&quot;360&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;


&lt;p&gt;In the initial case, the idea is to place two cameras side-by-side. When a known point is located in both frames, one can begin to calibrate the cameras, use triangulation and work out the depth. Using OpenCV, many of these functions are defined for you. In the above video, we can see the disparity map beginning to take shape. The disparity map on the right, shows the distance from one point in the left image to the same point in the right image. This apparent distance is related to the depth.&lt;/p&gt;

&lt;p&gt;One needs to work out two sets of parameters before we can begin to calculate the disparity. The first set of parameters are called the Intrinsic Parameters - these are related to the distortion effects that are encountered when using any lens. Barrel distortion and tangential distortion can make straight lines look curved. The second set of parameters are called Extrinsic parameters which are related the setup of the two cameras. Modelling and solving these equations for these cameras is known as &lt;a href=&quot;http://en.wikipedia.org/wiki/Camera_resectioning&quot;&gt;Camera Resectioning&lt;/a&gt;. Thankfully, OpenCV includes a method for this.&lt;/p&gt;

&lt;p&gt;The issue with not having straight lines might seem trivial but you can really see the effect when you look at photographs of skyscrapers or other tall buildings; they tend to curve as they reach for the sky. Of course, this has problems for determining the right correspondances between two images.&lt;/p&gt;

&lt;p&gt;No doubt, you'll have seen the chessboards everywhere when it comes to computer vision. Chessboards provide a good way to calibrate a camera as the intersections between the black squares form a good set of regular points on a plane. I've settled with a 9x6 chessboard with a wide, white edge, mounted on perspex. I take around 60 to 80 shots per camera when attempting to find the intrinsic values. So far, this seems to work most of the time. Im using Logitech C910 cameras for this experiment and they do have a reasonable amount of barrel distortion.&lt;/p&gt;

&lt;p&gt;The next step is to work out the Extrinsic Values. These are related to the setup and are not independent of the the view, unlike the intrinsic parameters. Depending on how your cameras are setup, these parameters will change. Again, OpenCV has another function that makes a pretty good guess at what these paramters should be. Again, you need a chessboard to generate a set of known points that can be seen from each camera.&lt;/p&gt;

&lt;object width=&quot;480&quot; height=&quot;360&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/D6DVhtsVmDE?version=3&amp;amp;hl=en_US&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/D6DVhtsVmDE?version=3&amp;amp;hl=en_US&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;480&quot; height=&quot;360&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;


&lt;p&gt;In the above video, I am generating a disparity map on the right hand side, then creating a simple mesh in the middle. Sadly, it's not quite perfect yet, but it's early days so far.&lt;/p&gt;

&lt;p&gt;I've found that OpenCV does provide a lot of useful functions but one needs to be aware that there are two versions out there, and many of the examples are not so useful. OpenCV2 is the main one to go for, and under Linux, building your own is a must. There are issues under unbuntu that revolve around the supporting libraries but these can be overcome with some clever symlinking. The &lt;a href=&quot;http://www.laganiere.name/opencvCookbook/&quot;&gt;OpenCV2 cookbook&lt;/a&gt; is really not a bad place to start. The O'Reilly OpenCV book is fairly canon but be aware that the code examples cover OpenCV1 only and there are a few differences.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>BSides London</title>
   <link href="http://lab.section9.co.uk/2012/04/27/BSides.html"/>
   <updated>2012-04-27T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2012/04/27/BSides</id>
   <content type="html">&lt;p&gt;It's not often I post about security stuff but I do like to know how the otherside lives. In my mind, I've always wanted to be an 'uber l33t haxor' but I just about rate script kiddie level. I'm not one for sniffing out exploits but one thing I do like is the intelligent vandalism side. Think Banksy, but in a more internet, technological sense. I think that idea has potential. So I go to a few conferences here and there and &lt;a href=&quot;http://www.securitybsides.org.uk&quot;&gt;BSides London&lt;/a&gt; is one that has just been this week.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://www.securitybsides.org.uk/images/BsidesAprilLogo.jpg&quot; alt=&quot;http://www.securitybsides.org.uk/images/BsidesAprilLogo.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So apart from having the crapest logo ever (and the one above isn't the worst, the one on the t-shirts is terrible) what did BSides have to offer?&lt;/p&gt;

&lt;p&gt;Well the whole event was free! Free entry free coffee (that wasn't half bad), free sandwiches and pastries and loads of nice fruit. Thats already a good start. Of course, it was sponsored heavily but then, the sponsors weren't overtly in your face. I only had one chap talk to me about Ubikeys so all in all, not too bad.&lt;/p&gt;

&lt;p&gt;The talks were interesting. The first was a talk on elegant security which, although interesting and funny, was not that informative I felt. Its a great concept to have in mind but then, thats something we should all aim for in our work, whatever field. Moving on from that, another talk on Social Engineering was... so so. Nothing remembered really.&lt;/p&gt;

&lt;p&gt;I was really looking forward to anti-forensics but it was cancelled. Instead we had a chap called Paco talk about Randomness which is a fantastic topic. A good speaker and quite passionate about his topic. Random really isn't simple and is often, not that random. After the break, the talk on HTML5 was of particular interest. The idea of running a botnet in a series of browsers is quite an amazing concept and I love the idea that this could take place. Perhaps an opt-in botnet for solving interesting problems is a much better idea? Still I'll be reading up at &lt;a href=&quot;http://www.html5security.org&quot;&gt;HTML5Security.org&lt;/a&gt; for all the latest tips.&lt;/p&gt;

&lt;p&gt;A Salesmans guide to social engineering was quite a funny talk. The idea of gauging people so you can sell to them, the use of NLP and similar is quite fascinating though Im told that the evidence for such things is anecdotal at best. Still, some people are more persuasive and there are indeed techniques that are taught to such people. Be aware, read the small print and question a lot seem to be the watch words. Dont be afraid to go against the grain and say 'no' seems to be the best way to avoid being socially engineered. Program or be programmed!&lt;/p&gt;

&lt;p&gt;Finally, the talk on Satellite hacking was marvellous. Technically, a little heavy for some, but it opened my eyes to a new world that is spinning over our heads, doing what it does. Its not an easy hobby to get in to but it does seem interesting. Apparently, Chinese security guards and Brazilian pirate radio stations get everywhere!&lt;/p&gt;

&lt;p&gt;I'd have liked to have seen more of track3, the talks that are short and unscheduled. There appeared to be a few interesting ones but I didnt get the chance. Of course, there was a lockpicking stand (which I failed at :( ) and I managed to snaffle two t-shirts and a laser pointer. Not bad I thought! A few stickers later and all was well.&lt;/p&gt;

&lt;p&gt;BSides is so much more fun than Infosec which runs at the same time. I have two rules for meetings and conferences these days. Go if you are either presenting orthere are things you really want to learn. Dont just go on a whim. I've fallen afoul of this before. The HTML and Satellite talks made it worth it, along with catching up with &lt;a href=&quot;http://www.digininja.org/&quot;&gt;Digininja&lt;/a&gt; who I tend to only see at such things.&lt;/p&gt;

&lt;p&gt;So I've learnt a few things, been inspired to learn more and chatted to some friends and drank more coffee than I thought possible. That, for me, is the perfect conference. And all for free! Contrast that with the invite to SIGCHI and I can see why some people think conferences are dead and over-rated. Not all of them are like this and BSides certainly isn't one of them. If you get the chance to go, definitely do so.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Boom Box</title>
   <link href="http://lab.section9.co.uk/2012/04/22/BoomBox.html"/>
   <updated>2012-04-22T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2012/04/22/BoomBox</id>
   <content type="html">&lt;p&gt;This is of course, no oridinary boom box at all, but a rather spiffing steam/cyber punk esque box that blows up when its turned down to the red level! I'm quite pleased with it. It's not been easy to build as my girlfriend will no doubt attest! :S&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7193/7076489781_7e40a2017b.jpg&quot; alt=&quot;Boom Box&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Why build such a thing you ask? Well, it's to do with &lt;a href=&quot;http://animation12.cs.manchester.ac.uk/&quot;&gt;Animation 12&lt;/a&gt; which is being held this summer. The idea is to get kids at school into CS and animation and similar fields. There is a competition for the best animations and awards are presented at a large event, held at the University of Manchester. There will be a keynote which this year, is all about lag, ping times and the speed of light and how we try and get around these limitations on the internet.&lt;/p&gt;

&lt;p&gt;My box is basically a prop... a fake mad scientist gadget that pretends to slow down causality! Yup, the big 'C'. Its essentially a fun and graphic way of showing the &lt;a href=&quot;http://en.wikipedia.org/wiki/Albert_Michotte&quot;&gt;Michotte&lt;/a&gt; experiment. So the idea is, after a certain point the brain believes that something isn't causal but actually, for small amounts of time between subsequent events, the brain can be fooled.&lt;/p&gt;

&lt;p&gt;The technical details revolve around an arduino (yes, everyone's favorite IC) and a standard circuit for switching on and off large voltages. I'd like to thank Phil Eagleton for helping with the schematic. Basically, the arduino is linked to an NPN Transitor that flicks a relay. The relay turns on a 9volt current that is passed through a pyro bought from &lt;a href=&quot;http://www.justfx.co.uk&quot;&gt;JustFX&lt;/a&gt; - a small company over in Tottenham. They have lots of lovely pyrotechnics and theatre equipment which is good to know.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7203/7101949535_6537774da4.jpg&quot; alt=&quot;Schematic&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Its a fairly straightforward circuit but the thing that threw me is the notion of a common ground. Its soooo obvious, its often just assumed but in all the diagrams I looked at for transistor circuits, it simply wasn't mentioned. I stumbled on it by accident, then had it confirmed by Phil. Marvellous!&lt;/p&gt;

&lt;p&gt;So what do it do? Well here you go!&lt;/p&gt;

&lt;iframe width=&quot;500&quot; height=&quot;284&quot; src=&quot;http://www.youtube.com/embed/BwJDT96jdZI&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;


&lt;p&gt;These Pyros are called &quot;Robotics&quot; and explode in a shower of sparks. They are quite vicious actually, as my swearing will attest! Clearly I have a dirty mouth!&lt;/p&gt;

&lt;iframe width=&quot;500&quot; height=&quot;284&quot; src=&quot;http://www.youtube.com/embed/NDQyUSc368U&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;


&lt;p&gt;Simply put 9V through them and BOOM! You have a wonderful explosion. I can't wait to see the finished video!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Custom Space Invader Waistcoat</title>
   <link href="http://lab.section9.co.uk/2012/04/16/Waistcoat.html"/>
   <updated>2012-04-16T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2012/04/16/Waistcoat</id>
   <content type="html">&lt;p&gt;Its fair to say that Im quite disillusioned with clothing in general and shop bought merchandise for men tends to be bland and just not fun unless you have loads of money. I personally feel that this needs to be changed. The Curator is an excellent seamstress and has been teaching me some tailoring and here is the first result.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm6.staticflickr.com/5462/6937114888_18a658df46.jpg&quot; alt=&quot;Waistcoat&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The whole thing is custom made and fits like a glove. The pockets were quite a challenge and indeed, there were a few tantrums before bedtime; it was a hell of a learning curve but finally, the waistcoat has seen the light of day. Thankfully, my girlfriend is very patient and a good teacher. Sewing with lovely super 100s material is quite lovely. Working from a pattern, basting, welted pockets and other such challenges were met and overcome, but I certainly could never have done this on my own.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm6.staticflickr.com/5235/6937115558_6b961ec157.jpg&quot; alt=&quot;Buttons&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The buttons are quite nifty. Designed with QCad and then cut with a laser cutter, these little beauties bring the whole ensemble together. Originally I had thought of laser cutting a small hole through the orange perspex behind but it didn't quite work. In the end I bought some shanks from eBay and glued them on. It turns out the little flashes of orange really make it. Of course, the bottom button is the turret - slightly offset.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7264/6881416048_9804c98b1f.jpg&quot; alt=&quot;buttons&quot; /&gt;&lt;/p&gt;

&lt;p&gt;If I make these again, I'll need to take into account the beam-width most likely, as the smaller pixels are barely more than melted slivers of plastic. The next challenge will be a set made by shapeways or milled from aluminium most likely.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Minimus and Sega</title>
   <link href="http://lab.section9.co.uk/2012/04/04/Minimus-and-Sega.html"/>
   <updated>2012-04-04T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2012/04/04/Minimus-and-Sega</id>
   <content type="html">&lt;p&gt;My sister has been a big fan of retro gaming for some time and for her birthday I decided to make a USB convertor for the sega megadrive pad in order to play &lt;a href=&quot;http://mamedev.org&quot;&gt;MAME&lt;/a&gt; the way it's meant to be played.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7179/7029645643_83b6a3ec75.jpg&quot; alt=&quot;minimus&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Now there were a few ways I could go about this. I saw a &lt;a href=&quot;http://dangerousprototypes.com/forum/viewtopic.php?f=56&amp;amp;t=2971&quot;&gt;blog post from dangerous prototypes&lt;/a&gt; that talked about using a PIC. Now I thought this would be a great time to test out the &lt;a href=&quot;http://dangerousprototypes.com/bus-pirate-manual/&quot;&gt;Bus Pirate&lt;/a&gt; (which is a great little toy) and learn how to program something a little different.&lt;/p&gt;

&lt;p&gt;Sadly, it turns out that this is not the case and you need a special adaptor to program PIC chips. What an utterly stupid thing to have done.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm7.staticflickr.com/6211/7029644525_1e4d78eee4.jpg&quot; alt=&quot;minimus&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So instead, I managed to find out about the &lt;a href=&quot;http://www.minimususb.com/&quot;&gt;minimus&lt;/a&gt; thanks largely to &lt;a href=&quot;http://imakethin.gs/&quot;&gt;Tom Wyatt&lt;/a&gt; and &lt;a href=&quot;http://jamie.lentin.co.uk/embedded/arcade-joystick/&quot;&gt;Jamie Lentin&lt;/a&gt;. The minimus is based on everyone's favourite, AVR! Only this particular AVR chip has USB built in! You can pick up a minimus from &lt;a href=&quot;http://www.modtraders.co.uk/&quot;&gt;Mod Traders&lt;/a&gt; and I highly suggest you do. The Minimus is powered by an Atmel AT90USB162. Its an 8-bit chip with 16K of memory. Its not quite as hefty as the Minimus 32 or the later arduino boards but at a fiver you'd be foolish not to buy at least 5. But here is the real clincher.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.fourwalledcubicle.com/LUFA.php&quot;&gt;LUFA&lt;/a&gt; is a full USB stack that can run on the minimus. Yes, it means your small device can run as a USB joystick, keyboard or other HID device complete with all the manufacturer lines and data that normal USB devices have. It's a wonderous thing to behold.&lt;/p&gt;

&lt;p&gt;I used Linux and Ubuntu to build and flash my minimus. The instructions are simple enough. I've been fighting AVR and Atmel's corner for a little while now, largelty because of &lt;a href=&quot;http://en.wikipedia.org/wiki/GNU_Compiler_Collection#Architectures&quot;&gt;AVR-GCC&lt;/a&gt; which is brilliant! The best compiler (okokok maybe clang is good too) has support for AVR chips. No need for extra cash spent on a special programming box. Its all done over USB. Brilliant. So forget PIC, it's time is over. From now on, its AVR, FPGAs and maybe a little ARM.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7229/7029644081_640d6f8fe4.jpg&quot; alt=&quot;minimus&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So, the actual Sega pad itself. Well the trick is to check out the latest version of LUFA and start with Jamie's joystick code, albeit somewhat adapted to having just 4 buttons. There is one major hack though for the SEGA pads. They multiplex the signals. So if you checkout &lt;a href=&quot;http://pinouts.ru/Game/genesiscontroller_pinout.shtml&quot;&gt;pinouts.ru&lt;/a&gt; you can see that there is a select line. What you are not told is that it is up to you to turn this on and off and check which buttons are pressed. So the minimus needs to check as fast as it can, if the various buttons are high when the select line is on and when it isn't on. This took me quite a while to find. Also, the version of LUFA in Jamie's article doesn't work outside of Linux sadly, so for OSX compatibility (and windows for that matter) use the latest from Subversion.&lt;/p&gt;

&lt;p&gt;Finally, I ordered an adaptor from Farnell for the 9 pin Atari style port and laser cut a small perspex box to mount it all in. Some wire, a little soldering and some hot glue later and the final device works a treat! :D One happy sister and a pleased hacker! What can possibly be bad about that? So forget stupid PIC chips. It's AVR all the way baby!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>New Lab</title>
   <link href="http://lab.section9.co.uk/2012/04/02/New-Lab.html"/>
   <updated>2012-04-02T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2012/04/02/New-Lab</id>
   <content type="html">&lt;p&gt;So I've left CSM and started section9.co.uk ltd and Im open for business with a new desk! :D&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7112/6891988900_5ea6170700.jpg&quot; alt=&quot;New Desk&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Im working with the University of Leeds at the moment; the strange article to the left of the photo is the current project that I can't say too much about. Im looking at a lot of WebGL work outside of that and a few physcial projects that need to be built so its all go.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7108/7038073543_a6f3010789.jpg&quot; alt=&quot;3D desk&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Its good to be back in the swing of building cool things again though its pretty tough. I spent a while settling down to it. I hunted around London for a few different venues and settled on a shared desk with &lt;a href=&quot;http://hq.pingdynasty.com/blog/&quot;&gt;Ping Dynasty&lt;/a&gt; who live above &lt;a href=&quot;http://london.hackspace.org.uk&quot;&gt;London Hackspace&lt;/a&gt;. This has proven to be quite useful. The space is close by enough so I can use the tools but I have a secure area of my own where experiments can be left and things made. It seems to work so far, though I still have far too much to get done! :D&lt;/p&gt;

&lt;p&gt;I'd looked at other shared desk spaces and a few artist studios. The problem with the latter is a limited company is not allowed to work out of such a space. In addition the security is quite poor and the locations were not ideal. I'd looked at a proper office over near the river at the Southbank which sounded great and wasn't too expensive but the problem here was the distance from where I live, the people I seem to be working with and potential clients. The east end of London is certainly where all the cool stuff goes down.&lt;/p&gt;

&lt;p&gt;Its scary but its a new beginning in a way and I'm quite excited!&lt;/p&gt;

&lt;p&gt;Unit 30, Cremer Business Centre, Cremer St, London E2 8HD if you fancy popping by for a cuppa! :D&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Resonate Festival</title>
   <link href="http://lab.section9.co.uk/2012/03/21/Resonate.html"/>
   <updated>2012-03-21T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2012/03/21/Resonate</id>
   <content type="html">&lt;p&gt;As part of my final duties at CSM, I went to the &lt;a href=&quot;http://resonate.io/2012/#home&quot;&gt;Resonate Festival&lt;/a&gt; in Belgrade, Serbia.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7046/7001136999_1ca162a76c.jpg&quot; alt=&quot;Me Papped&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The festival itself had its fair share of rockstars - the lineup consisting of almost everyone who is anyone in my particular field. We'd decided to take some of the students along with us as they were perhaps more into it than I was. Ultimately, it was aimed at them. Most of the talks were rehashings of things I'd see before.&lt;/p&gt;

&lt;p&gt;On the first day, most of the talks took place in a small room that had nowhere enough space, let alone chairs. The Guardian gave an interesting talk about streams and how we digest information these days and the written images guys gave an interesting talk, even if they were a bit scared. Overall, it was somewhat annoying sitting on the floor and not actually being able to see very much. I didn't really learn very much but I the tour of the city of Belgrade was a little more useful and fun!&lt;/p&gt;

&lt;p&gt;On the second day, we were determined to actually get a decent seat. Jurg Lehni gave a very interesting talk, as you can see from my face below:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7060/6990443813_e7f0d3194c.jpg&quot; alt=&quot;throne&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I dont mess about when I've had a bad experience! Big seats certainly make talks a lot better. Jer Thorp gave an interesting talk and Field.io showed off a lot of their very pretty work which is always lovely to see. After about 5pm though, things just got a little boring and the city began to call instead. I decided not to stick around for DJ Spooky and worked on a project instead,&lt;/p&gt;

&lt;p&gt;So overall, was it worth it? Well, Serbia certainly is a fun place to visit and Belgrade has a lot of energy. The weather was great and I took plenty of good photos but overall, I'd say such events are more rabble rousing speeches that mostly consist of &quot;look at us, aren't we cool&quot; - Its something I'm not a huge fan of and if anything, its galvanised me to make more stuff which is a result of sorts but not something I'd actually expected.&lt;/p&gt;

&lt;p&gt;I think, the next conference I go to, I'll need to be presenting. Otherwise, its just not really worth it. But there are plenty of opportunities for &lt;a href=&quot;http://www.flickr.com/photos/section9/sets/72157629265890474/&quot;&gt;Great Photos&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7086/6855171714_ac4db8464c.jpg&quot; alt=&quot;girl and cube&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Also, how can one be glum when you get to visit the &lt;a href=&quot;http://www.tesla-museum.org/&quot;&gt;Nikola Tesla Museum&lt;/a&gt; :D&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Spying and starting services with OSX</title>
   <link href="http://lab.section9.co.uk/2012/03/10/Spying.html"/>
   <updated>2012-03-10T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2012/03/10/Spying</id>
   <content type="html">&lt;p&gt;Unbelievable! It's been almost a month since my last blog post which is, quite frankly, terrible. What have I been doing?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Leaving CSM&lt;/li&gt;
&lt;li&gt;Visiting many places&lt;/li&gt;
&lt;li&gt;Working hard on OSX Services&lt;/li&gt;
&lt;li&gt;Writing my own WebGL framework (and not getting far enough!)&lt;/li&gt;
&lt;li&gt;many, many other small jobs&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Its been one of these months. Most of that revolves around getting my &lt;a href=&quot;https://github.com/OniDaito/iSpy&quot;&gt;iSpy&lt;/a&gt; project together and learning how OSX fails to make loading services easy. Basically, I have a small daemon process that reports the IP to whoever is listening on one port (broadcast) or a specific IP. For a while, I had a router on my desk, listening to which machines were on or off and comparing that with the Mac address list to see which machines I could run admin tasks on.&lt;/p&gt;

&lt;p&gt;Now, launching something as a daemon is not too hard with OSX. You need a &lt;em&gt;plist&lt;/em&gt; file that goes into &lt;em&gt;/Library/LaunchDaemons&lt;/em&gt;. There are other places you can place this plist (and the &lt;a href=&quot;https://developer.apple.com/library/mac/#documentation/darwin/reference/manpages/man5/launchd.plist.5.html&quot;&gt;Apple Plist Page&lt;/a&gt; has them all). &lt;a href=&quot;https://developer.apple.com/library/mac/#documentation/darwin/reference/manpages/man1/launchctl.1.html#//apple_ref/doc/man/1/launchctl&quot;&gt;Launchctl&lt;/a&gt; is the command you need to interface with the &lt;em&gt;launchdaemon&lt;/em&gt; process that runs osx. A plist looks like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
 &amp;lt;!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd &amp;gt;
 &amp;lt;plist version=&quot;1.0&quot;&amp;gt;
 &amp;lt;dict&amp;gt;
    &amp;lt;key&amp;gt;Label&amp;lt;/key&amp;gt;
        &amp;lt;string&amp;gt;net.ispy.server&amp;lt;/string&amp;gt;
    &amp;lt;key&amp;gt;ProgramArguments&amp;lt;/key&amp;gt;
        &amp;lt;array&amp;gt;
            &amp;lt;string&amp;gt;/Users/lsadmin/iSpy&amp;lt;/string&amp;gt;
            &amp;lt;string&amp;gt;--ip=10.130.145.15&amp;lt;/string&amp;gt;
        &amp;lt;/array&amp;gt;
    &amp;lt;key&amp;gt;RunAtLoad&amp;lt;/key&amp;gt;
        &amp;lt;true/&amp;gt;
    &amp;lt;key&amp;gt;WorkingDirectory&amp;lt;/key&amp;gt;
        &amp;lt;string&amp;gt;/Users/lsadmin&amp;lt;/string&amp;gt;
    &amp;lt;key&amp;gt;UserName&amp;lt;/key&amp;gt;
        &amp;lt;string&amp;gt;student&amp;lt;/string&amp;gt;
    &amp;lt;key&amp;gt;LowPriorityIO&amp;lt;/key&amp;gt;
        &amp;lt;true/&amp;gt;
 &amp;lt;/dict&amp;gt;
 &amp;lt;/plist&amp;gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;So, you have the various keys and tags that are fairly self explanatory. This works fine.....&lt;em&gt;EXCEPT&lt;/em&gt; what do you do if you want to attach to a running session? Now we have a problem!&lt;/p&gt;

&lt;p&gt;So, a user logs in and you want to spawn a process that attaches to their windowed session in order to capture the mouse clicks or similar. The trick is to use the &lt;a href=&quot;http://support.apple.com/kb/Ht2420&quot;&gt;loginhook&lt;/a&gt; trick.&lt;/p&gt;

&lt;p&gt;Now this seemed not to work. The trick is to do this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo defaults write \
/private/var/root/Library/Preferences/com.apple.loginwindow\
LoginHook /usr/bin/loginhook
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Set loginhook to chmod a+x and everytime a user logs in, loginhook will fire. Inside the loginhook you place a command like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;launchctl submit -l 
net.ispy.student.server -- /Users/lsadmin/iSpy 
--ip 10.130.145.15 --nobroadcast --port 6668
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This launches my little daemon in the background. So basically, loginhook attaches to the windowed session and then fires off a service that sits in the background. The only issue with this, is a terminal window pops up saying that loginhook has executed. That sucks but fortunately, terminal is disabled on some accounts so this doesn't occur.&lt;/p&gt;

&lt;p&gt;So, for attaching to windowed sessions, we are cool. The problem I then faced was setting up Blender to render across a network with a set of slaves running as default. The issue here is to run a blender process in the background as a non priviledged user. Now, the first plist trick didnt work and neither did loginhook. The trick here is to create a bashscript like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#!/bin/bash
sudo su -- student -c &quot;/Applications/Blender.app/Contents/MacOS/blender
-b /Users/student/Library/
Application\ Support/Blender/2.61/config/startup.blend -a&quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You then create a plist as before, that calls this bash script. This ends up running blender as a &lt;em&gt;student&lt;/em&gt; process, waiting for commands from the render farm client.&lt;/p&gt;

&lt;p&gt;Snow Leopard, Lion, Leopard and Tiger all appear to have different processes for starting things up. I've looked at all the variations across the web and they certainly aren't easy to sort out. So far though, I've managed to get it sorted!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>3D Scanning with 123D Catch</title>
   <link href="http://lab.section9.co.uk/2012/02/14/3D-Scanning.html"/>
   <updated>2012-02-14T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2012/02/14/3D-Scanning</id>
   <content type="html">&lt;p&gt;I've been interested in scanning things of late. There is a job I'm chasing that may potentially involve 3D scanning and as a project, it encompasses many things I like. So I decided to give &lt;a href=&quot;&quot;&gt;123D Catch&lt;/a&gt; a go, as it seems to be quite good from what people have posted online. Sadly, I've not had so much luck with it.&lt;/p&gt;

&lt;p&gt;Apparently, one needs to rotate a camera around the object you want to scan, so I did just that, building a little rig out of a bicycle wheel, just like this.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7066/6869360089_e926cb6fd1.jpg&quot; alt=&quot;Bicycle Wheel Scanner&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Mounted around the rim, I placed the Logitech C910 that I use for good work. The results look like this:&lt;/p&gt;

&lt;object width=&quot;560&quot; height=&quot;315&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/-KmUcCcHuoE?version=3&amp;amp;hl=en_US&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/-KmUcCcHuoE?version=3&amp;amp;hl=en_US&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;560&quot; height=&quot;315&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;


&lt;p&gt;You can, of course, just spin the thing and record video. That looks quite cool actually!&lt;/p&gt;

&lt;object width=&quot;560&quot; height=&quot;315&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/Lips-BBa138?version=3&amp;amp;hl=en_US&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/Lips-BBa138?version=3&amp;amp;hl=en_US&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;420&quot; height=&quot;315&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;


&lt;p&gt;The problem is, the results just arent that impressive. Only the hat actually came out right.&lt;/p&gt;

&lt;object width=&quot;560&quot; height=&quot;315&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/RQHA57jadsY?version=3&amp;amp;hl=en_US&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/RQHA57jadsY?version=3&amp;amp;hl=en_US&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;560&quot; height=&quot;315&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;


&lt;p&gt;So I thought, maybe I'm being too clever. Lets just use some actual DSLR snaps as people seem to suggest. The best I managed was half a pig!&lt;/p&gt;

&lt;object width=&quot;560&quot; height=&quot;315&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/ZVU8vY8BRc4?version=3&amp;amp;hl=en_US&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/ZVU8vY8BRc4?version=3&amp;amp;hl=en_US&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;560&quot; height=&quot;315&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;




&lt;object width=&quot;420&quot; height=&quot;315&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/i2bnaICown4?version=3&amp;amp;hl=en_US&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/i2bnaICown4?version=3&amp;amp;hl=en_US&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;420&quot; height=&quot;315&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;


&lt;p&gt;So basically, a thumbs down for 123D catch. I suspect laser scanning or improved Kinect code is the way forward here.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Phantom Limb Pain with the Kinect</title>
   <link href="http://lab.section9.co.uk/2012/02/03/Phantom-Limb.html"/>
   <updated>2012-02-03T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2012/02/03/Phantom-Limb</id>
   <content type="html">&lt;p&gt;Over the summer, I worked with &lt;a href=&quot;http://aig.cs.man.ac.uk/home/home.php&quot;&gt;Advanced Interfaces Group&lt;/a&gt; at &lt;a href=&quot;http://www.manchester.ac.uk&quot;&gt;The University of Manchester&lt;/a&gt; on a research project to investigate &lt;a href=&quot;http://en.wikipedia.org/wiki/Phantom_limb&quot;&gt;Phantom Limb Pain&lt;/a&gt;. Previously, Steve Pettifer and Toby Howard (the principle researchers) has tried VR and ping pong ball style tracking in order to recreate a virtual world and 'mirror' the missing limb. The idea is to create a more immersive version of the &lt;a href=&quot;http://en.wikipedia.org/wiki/Mirror_box&quot;&gt;Ramachandran Mirror Box&lt;/a&gt;. It's a way to try and unlearn what has been learnt.&lt;/p&gt;

&lt;object width=&quot;500&quot; height=&quot;281&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=36085689&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00adef&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=36085689&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00adef&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;500&quot; height=&quot;281&quot;&gt;&lt;/embed&gt;&lt;/object&gt;


&lt;p&gt;Since the Kinect and cheaper VR goggles have become available, it seemed the right time to rebuild this system with modern technology in order to test what things affect pain relief. Although the mirror box only costs about 2 pounds, we can't easily change parameters and exercises, so there is definitely something to look at.&lt;/p&gt;

&lt;p&gt;The technical aspects of the project were quite interesting. The first problem is how to get from the Kinect to a moving person? The OpenNI team were the first to do this with the OGRE model Sinbad:&lt;/p&gt;

&lt;object width=&quot;480&quot; height=&quot;360&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/Zl6O-Rf52Co?version=3&amp;amp;hl=en_US&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/Zl6O-Rf52Co?version=3&amp;amp;hl=en_US&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;480&quot; height=&quot;360&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;


&lt;p&gt;The technique is known as skinning. It works by attaching vertices to bones with weights. As the bones are transformed, the vertices follow the bones by a certain amount, relative to the weight. Imagine a lower arm bone moving up and down. The vertices in the lower arm will be attached with high weightings whereas the vertices in the leg will not.&lt;/p&gt;

&lt;p&gt;The problem here is there are no real APIs or similar for this. The closest modelling tool kit is the &lt;a href=&quot;http://usa.autodesk.com/adsk/servlet/index?siteID=123112&amp;amp;id=7478532&quot;&gt;FBX SDK&lt;/a&gt; which has support for skinning, textures, animation and indeed, anything you could possibly need for models. It's my goto library for this sort of thing.&lt;/p&gt;

&lt;p&gt;OpenNI provides tracking for the skeleton, as most of us know by now. In addition, it provides a matrix for each bone. Using this matrix with the FBX SDK, one can skin a model in the normal way. First challenge over!&lt;/p&gt;

&lt;p&gt;One thing the Kinect can't do is detect rotation. Imagine you are trying to rotate your wrist to look at your palm. That motion cannot be detected and its an open problem at the moment. As my video shows, a gyroscope can help to fix that.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7033/6811254669_fcb48f2227.jpg&quot; alt=&quot;Architecture&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The next step is to create the visuals and immerse the user in the scene. Vuzix produce a set of reasonable headsets. The &lt;a href=&quot;http://www.vuzix.com/consumer/products_vr920.html&quot;&gt;Vuzix VR920&lt;/a&gt; sits in my toolbox most of the time. They are superior to the Wrap models that Vuzix are pushing. The problem is they are now discontinued. This means the drivers for OSX don't actually work properly when it comes to the gyros and accelerometers. This meant that headtracking would be a problem.&lt;/p&gt;

&lt;p&gt;Thanks to &lt;a href=&quot;http://adafruit.com/&quot;&gt;Adafruit Industries&lt;/a&gt; and &lt;a href=&quot;http://www.sparkfun.com&quot;&gt;Sparkfun&lt;/a&gt; I decided it would be possible to create an agnostic head tracking solution using XBee wireless modules. Adafruit provided the USB dev boards for driving the XBees and Sparkfun provided the Gyro unit - The &lt;a href=&quot;http://www.sparkfun.com/products/9184&quot;&gt;Atomic IMU&lt;/a&gt;. We tried a few other boards but this one seemed to work the best.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm3.staticflickr.com/2130/5794083824_6cc8abfb7d.jpg&quot; alt=&quot;Atomic&quot; /&gt;&lt;/p&gt;

&lt;p&gt;At the time, I was up north and away from London Hackspace. Thankfully, FabLab came in with their laser cutter. I built the box and 3D Printed some cases for all the chargers and parts we needed. Rather than just have the XBee USB boards and the lipoly chargers being exposed, I figured some 3D printing might be in order.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7014/6811365387_73f69d5541.jpg&quot; alt=&quot;XBee Case&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Google sketchup to 3D printing works quite well. Again, thanks to &lt;a href=&quot;http://www.fablabmanchester.org/&quot;&gt;FabLab Manchester&lt;/a&gt; for helping out with that.&lt;/p&gt;

&lt;p&gt;Converting a Gyro and an Accelerometer into orientation data is not a trivial task. At first, I thought just a gyro would be fine but thats not the case at all. A gyro measures the force acting on the gyro to keep it stable, not the orientation itself. An accelerometer measures the acceleration in a particular direction. In order to understand the movement, one must have a start point and then integrate over the values. This means that errors will build up. These can be corrected with the accelerometer data and that is fine, so long as you actually have accelerometer data for that axis. You certainly don't for Yaw.&lt;/p&gt;

&lt;p&gt;This is known as yaw drift. You can't correct for it, because gravity acts along the Y axis, the up down axis. So if you are spinning around that axis the acceleration due to gravity doesn't change. In our version, we don't have a compass to correct for that. Its definitely something we can improve on.&lt;/p&gt;

&lt;p&gt;Most of the code is actually related to Unmanned Aerial Vechicles. Ultimately, I settled on the &lt;a href=&quot;http://en.wikipedia.org/wiki/Discrete_cosine_transform&quot;&gt;Discrete Cosine Matrix&lt;/a&gt; with a set of &lt;a href=&quot;http://en.wikipedia.org/wiki/Kalman_filter&quot;&gt;Kalman filters&lt;/a&gt;. Eventually, I'd like to implement &lt;a href=&quot;http://code.google.com/p/imumargalgorithm30042010sohm/&quot;&gt;this imu algorithm&lt;/a&gt; as its likely to improve things drastically. That said, it's still not too bad, though the yaw needs to be reset a little too often. We also tested the &lt;a href=&quot;http://voidbot.net/razor-6dof.html&quot;&gt;Sparkfun Razor 6DOF&lt;/a&gt; as well as there was quite a lot of good things said about it.&lt;/p&gt;

&lt;p&gt;Headtracking and limb tracking complete, the next step was the graphics. Shadows were seen as important in order to gain some context about where the user appears in the scene. I tried Screen Space Ambient Occlusion and basic shadow mapping, settling with the later.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm7.staticflickr.com/6010/5964128715_26888db203.jpg&quot; alt=&quot;Shadows&quot; /&gt;&lt;/p&gt;

&lt;p&gt;One problem to these who know a little about OpenNI and Kinect tracking is the PSI Pose. This is where the calibration problem comes in. How can you ask a person with one arm to stand with both arms up in the air? Fortunately, we can save a calibration from a similar person and use these with the participant. The SDK has improved since then, so this should be less of a problem.&lt;/p&gt;

&lt;p&gt;At the same time, we needed to create some games. The participant needs to move their phantom limb in order to feel relief. I was joined on the project by a Manchester student, David Edwards who came up with a few games like Connect 4. At this point, I needed to consider documentation, APIs and similar - handing over my code to another person and asking them to run with it.&lt;/p&gt;

&lt;p&gt;This project covered all the bases for me. Working with talented people, making physical things, software engineering, computer graphics and most importantly, making a difference in someone's life. Our first participant said his pain was going down whilst he was using our program. Theres an awful lot left to explore. Im sure the AIG will come up with something great.&lt;/p&gt;

&lt;p&gt;The paper has been accepted at the GRAPP conference this year:&lt;/p&gt;

&lt;p&gt; S. Pettifer, T.L.J. Howard, B. Blundell, and D. Edwards.
 An immersive virtual environment for phantom limb pain rehabilitation.
 In Proceedings of the International Conference of Computer
 Graphics Theory and Applications (GRAPP),
 February 2012. Accepted for publication.&lt;/p&gt;

&lt;p&gt;At the time, I was motorcycling between Southport and Manchester quite regularly. For a few months, I was the leather clad biker programmer guy. It did feel pretty damn cool! :)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Astrolabe</title>
   <link href="http://lab.section9.co.uk/2012/01/18/Astrolabe.html"/>
   <updated>2012-01-18T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2012/01/18/Astrolabe</id>
   <content type="html">&lt;p&gt;I've always been fascinated by space, the planets, their maps and photos. The Curator is one of only a handful of experts in the world studying medieval scientific instruments and the astrolabe definitely fits that category.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7011/6716956337_ee19b570ff.jpg&quot; alt=&quot;Astrolabe&quot; /&gt;&lt;/p&gt;

&lt;p&gt;As part of a project I'm working on, I decided to build my own Astrolabes - one from paper and another from perspex, in order to get a feel for their construction. The goal is to create a WebGL version for display. This version is taken from &lt;a href=&quot;http://www.thingiverse.com/thing:3271&quot;&gt;the one available at Thingiverse&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Technically, this was quite a challenge. &lt;a href=&quot;http://london.hackspace.org.uk&quot;&gt;LondonHackspace&lt;/a&gt; has a laser cutter but the software for it is awful. In addition it is quite often worn out which is clearly no good. Nevertheless I persevered.&lt;/p&gt;

&lt;p&gt;The format for this file was a Corel Draw CDR. Seriously, do people still use these? Anyway, I needed a program to convert that down. &lt;a href=&quot;http://sk1project.org/modules.php?name=Products&amp;amp;product=uniconvertor&quot;&gt;Uniconvertor&lt;/a&gt; seemed like the thing, but getting it to compile and build on OSX was not an easy job at all. In fact, I had a lot of issues with it. Nevertheless, I converted the CDR into an illustrator file. No dice! CDR to SVG worked a lot better.&lt;/p&gt;

&lt;p&gt;Loading the SVG into Illustrator allowed me to see the various problems and options available. Two front plates were included, one for the southern and one for the northern hemisphere. The first thing was to seperate out all of the various components as each would be etched and cut into a seperate sheet of coloured perspex at 3mm.&lt;/p&gt;

&lt;p&gt;Further conversion from SVG was needed. Inkscape makes a good job of loading the SVG correctly. Exporting from Inkscape to a DXF is the next step, making sure LWPOLYLINE and ROBOMASTER were NOT selected. Finally, for the hackspace laser cutter, importing into QCAD was needed, because the laser cutter software does not support layers. The front plate, rete, pointers and bevel both have cutting and etching sections, so layering (or in our case, colouring) with QCAD was needed.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7158/6716964469_2057259913.jpg&quot; alt=&quot;astrolabe&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So, after a about 5 programs later and a lot of swearing and bitching, the Astrolabe was ready. There are problems with it. The text has not come out at all and there are a few markings missing. Etching on the backplate is slightly out of alingnment and the rete is incomplete; the star map should appear on it as well. I may use acetate glued to the back of the rete. Also, the outer bevel should be fixed and not move with the rete but the tolerance is too tight and despite my efforts to file down the edges, it still wouldn't move.&lt;/p&gt;

&lt;p&gt;But this is fast prototyping in plastic! Its only the first step.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Mosaic</title>
   <link href="http://lab.section9.co.uk/2012/01/13/Mosaic.html"/>
   <updated>2012-01-13T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2012/01/13/Mosaic</id>
   <content type="html">&lt;p&gt;As is my way, I decided to embark on some intelligent vandalism, only this time, in the digital realm. We have several machines in our lab at Central St Martins and access to these is completely open. There are no student passwords and as such, students here have become lazy and left all their data on the desktop or trash. I decided to write a script to pull off all the data from these machines, find the images and mash them all together in a mosaic.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7159/6679523043_d04379dcd7.jpg&quot; alt=&quot;Final Attempt&quot; /&gt;&lt;/p&gt;

&lt;p&gt;At first, I had to grab the images, rename them, resize them and put them in the right sort of place. This is actually a tricky problem because files have spaces, many directory levels and all the rest.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#!/bin/bash
c=0
find . -type f -name &quot;*.jpg&quot; -o -name &quot;*.jpeg&quot; 
-o -name &quot;*.JPG&quot; -o -name &quot;*.png&quot; -o -name &quot;*.PNG&quot;
-o -name &quot;*.tif&quot; -o -name &quot;*.tiff&quot; 
-o -name &quot;*.bmp&quot; -o -name &quot;*.BMP&quot; 
-o -name &quot;*.TIFF&quot; -o -name &quot;*.TIF&quot; 
-o -name &quot;*.JPEG&quot; | while read FILE
do
  fn=&quot;$(basename &quot;$FILE&quot;)&quot;
  echo &quot;$FILE&quot;
  en=${fn##*.}
  dn=&quot;$(dirname &quot;$FILE&quot;)&quot;
  cp -- &quot;$FILE&quot; $1/$c.$en
  convert &quot;$1/$c.$en&quot; -resize 64x64 &quot;$1/$c.jpg&quot;
  let c=c+1
done 
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This worked more or less. There are probably improvements we can make to this but for now, I had around 300,000 images already! Quite a lot to pick from.&lt;/p&gt;

&lt;p&gt;Originally, I wanted to use an &lt;em&gt;off-the-shelf&lt;/em&gt; solution. I found &lt;a href=&quot;http://web.me.com/knarf/MacOSaiX/Download.html&quot;&gt;MacOSaiX&lt;/a&gt;, &lt;a href=&quot;http://www.mazaika.com/mac/&quot;&gt;Mazaika&lt;/a&gt; and &lt;a href=&quot;http://osxdaily.com/2007/02/02/easily-create-photo-mosaics-with-mozodojo/&quot;&gt;Mozodojo&lt;/a&gt;. The image below is created with Mazaika.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7018/6558676823_9357ac2381.jpg&quot; alt=&quot;Mazaika first attempt&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The problem with all of these is they are limited to certain sizes, despite giving good results. I wanted this to be A0 at 300DPI when printed. The problem of course, is that the image sizes are huge. Most programs just can't cope with it. Mazaika is limited in how many you can use unless you buy it (and its too expensive for what it is) and the others can't cope. So, in the end, I decided to write my own.&lt;/p&gt;

&lt;p&gt;Using &lt;em&gt;OpenCV&lt;/em&gt; I came up with two programs that you can &lt;a href=&quot;https://github.com/OniDaito/PhotoMosaic&quot;&gt;get from my github page&lt;/a&gt;. The first goes through the set of images and creates a text file of average RGB values. The second performs the matching based on this database. OpenCV is used throughout to process the images. The result was a program that took a while to run, but wouldn't crash.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7146/6653456325_2dec97ee53.jpg&quot; alt=&quot;first attempt&quot; /&gt;&lt;/p&gt;

&lt;p&gt;You can see that although it has worked, it's not brilliant. It matches well but I noticed that some areas were just too similar. I adjusted with a small amount of random jitter in the source colour.&lt;/p&gt;

&lt;p&gt;After looking around the web, I finally found &lt;a href=&quot;http://en.wikipedia.org/wiki/OpenMP&quot;&gt;OpenMP&lt;/a&gt; which is a lovely concept, baked right into GCC. It allows you to take control of many cores on your machine, and create threads easily.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#pragma omp parallel for
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This one line basically sped up one of the steps by a factor of 7. Essentially, this task, without local neighbourhood refinement, is all parallel and so, OpenMP was a wonderful find and a free win. Great!&lt;/p&gt;

&lt;p&gt;There is more to be done for sure - this sort of large scale processing could be useful for video, or maybe transformed into Scala or similar for parallel processing over many machines?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>EL-Tape Mesh Top</title>
   <link href="http://lab.section9.co.uk/2012/01/04/EL-Tape.html"/>
   <updated>2012-01-04T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2012/01/04/EL-Tape</id>
   <content type="html">&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7170/6630578629_63b3985040.jpg&quot; alt=&quot;EL-Mesh Top&quot; /&gt;&lt;/p&gt;

&lt;p&gt;EL-Tape and EL-Wire have been around for a few years. We've all seen &lt;a href=&quot;http://www.google.co.uk/search?q=tron+guy&amp;amp;um=1&amp;amp;ie=UTF-8&amp;amp;hl=en&amp;amp;tbm=isch&amp;amp;source=og&amp;amp;sa=N&amp;amp;tab=wi&amp;amp;ei=AjkET63gLYra8APe-6DGAQ&amp;amp;biw=1505&amp;amp;bih=829&amp;amp;sei=BzkET4PbKdD_8QOklcmhBA&quot;&gt;Tron Guy&lt;/a&gt; and all the rest. For me, EL-Wire is only suitable for rigid objects. It looks naff when it's just sewn on with no thought or style behind it. Lady Ada's &lt;a href=&quot;http://www.ladyada.net/make/tronbag/&quot;&gt;EL-Wire Bag&lt;/a&gt; is probably the best example of how EL-Wire should be used, in my humble design opinion.&lt;/p&gt;

&lt;p&gt;EL-Tape has its own challenges though. It's flatter and wider as you'd expect and there have been a few good designs out there. The &lt;a href=&quot;http://io9.com/5708876/how-to-make-your-tron-costume-glow-with-electroluminescent-wire&quot;&gt;Quora&lt;/a&gt; costumes aren't bad and I'm sure you know of other examples. I wanted something that was work-a-day, fun and looked good without being cliche, or &lt;em&gt;tron-esque&lt;/em&gt; though hinting at it of course.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7015/6634147313_bb2a4cac3f.jpg&quot; alt=&quot;Mighty Singer&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The Curator is an excellent seamstress, among her many other talents, and I've been learning how to improve my own sewing skills. She came up with the idea of using an elastic, fishnet sleeve to contain the tape. We don't actually sew the tape at all. This has many advantages. By using a spiral, the top can flex quite easily with the arm.&lt;/p&gt;

&lt;p&gt;The wire for the invertor goes down the back. Im using the invertor and tape from &lt;a href=&quot;http://www.adafruit.com/category/50&quot;&gt;Adafruit Industries&lt;/a&gt; who I highly recommend.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7165/6630571803_583f97ed37.jpg&quot; alt=&quot;El-Tape Mesh Top&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The top came from Uniqlo who generally make good stuff (I'm told) and although the sewing was challenging, the material made the sewing not quite as hard as it could have been.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Linux and Lion together at last (almost)</title>
   <link href="http://lab.section9.co.uk/2011/12/28/Lion-and-Linux-Together.html"/>
   <updated>2011-12-28T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2011/12/28/Lion-and-Linux-Together</id>
   <content type="html">&lt;p&gt;I must have spent an age getting this to work! Several forums and blog posts later I &lt;em&gt;think&lt;/em&gt; I've managed to sort this. My laptop had been suffering from slow-downs with Lion installed and the wifi had begun to break. I figured it was high-time to re-install the lot.&lt;/p&gt;

&lt;p&gt;Backing everything up using an external drive, I set to with a snow-leopard DVD. No dice here folks. It turns out that OSX will only boot from a CD that either came with your machine or that has a higher version of the OS on the CD than on your hard-disk.&lt;/p&gt;

&lt;p&gt;I attempted to be clever and figured I could setup Linux after Snow Leopard and created 1 partition with some freespace afterwards. Of course, installing &lt;em&gt;ubuntu natty&lt;/em&gt; is a tricky beast, especially on a newer MacBook Pro. The Ubuntu forums are full of information on setting up the various versions of the Macbook. The later versions are not actually support officially. You can burn a DVD or a USB stick but to actually get Ubuntu installed you need both.&lt;/p&gt;

&lt;p&gt;Thats right! Burn Natty to a CD and to a USB stick. Plug both in and then either use &lt;a href=&quot;http://refit.sourceforge.net/&quot;&gt;ReFIT&lt;/a&gt; or hold down 'c' on the keyboard and boot from the CD. You'll get into the installer and away you go.&lt;/p&gt;

&lt;p&gt;The reason for Ubuntu is the PCL Cloud Libraries work better under Linux at the moment, with the Kinect Fusion stuff being only just around the corner. It's worth pointing out that an nVidia card is needed in your MacBook Pro for the best stuff to work, I.E anything using CUDA. Not all MacBooks use nvidia hardware and I still don't know if mine can run CUDA under Linux.&lt;/p&gt;

&lt;p&gt;Anyway, trying to install Lion over the top of Snow Leopard didn't work at all. Sadly, it seems Lion wants around 128meg extra after the Snow Leopard Partition. Fine, I figured. Lets just use &lt;em&gt;Disk Utility&lt;/em&gt; to sort that out. No dice. &quot;Mediakit reports no such partition&quot; was the message here. Apparently, my partitioning of the disk using the Ubuntu installer had not gone well.&lt;/p&gt;

&lt;p&gt;Lion uses the GUID system for it's paritions and I figured that was worth checking. &lt;a href=&quot;http://www.ipartition.com&quot;&gt;iPartition&lt;/a&gt; allows you to do this with their boot CD but even this failed to fix the problem. In the end I just backed up again, downloaded a copty of Lion and burnt that to a DVD. I now have a bootable version of OSX Lion from which one can partition, install and get a system up and running.&lt;/p&gt;

&lt;p&gt;Having said all that, it would appear that ReFIT is nowhere to be seen now, despite having installed it. Im now greated with a password prompt straight off the bat, so no idea if Linux will even install at all.&lt;/p&gt;

&lt;p&gt;Not the best thing to be doing over Christmas I must admit!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Super History Girl Necklace</title>
   <link href="http://lab.section9.co.uk/2011/12/21/Super-History-Girl-Necklace.html"/>
   <updated>2011-12-21T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2011/12/21/Super-History-Girl-Necklace</id>
   <content type="html">&lt;p&gt;The Curator is a wonderful lady, and for her birthday and our trip to Berlin, I came up with an idea for a necklace. I wanted to make something unique and wonderful that she would appreciate and that I'd have fun making. I often joke that she's &quot;A super girl who saves history&quot; and so the idea began to form.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7158/6539948549_275c40c2bb.jpg&quot; alt=&quot;Super History Girl&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I'm quite amazed that one can make such things quite easily nowadays. Here is how I went about it.&lt;/p&gt;

&lt;p&gt;Firstly, I sketched up the idea in Ilustrator, using the path tool. Exporting these as an &lt;em&gt;SVG&lt;/em&gt; allows importing into &lt;a href=&quot;http://www.blender.org&quot;&gt;Blender&lt;/a&gt;. I suppose I could have used &lt;a href=&quot;http://inkscape.org/&quot;&gt;Inkscape&lt;/a&gt; had I been thinking along these lines.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://lab.section9.co.uk/images/blender.jpg&quot; alt=&quot;blender&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The SVG is converted into a set of 3 curves. You can add a modifier to these in order to &lt;em&gt;extrude&lt;/em&gt; the curves a certain distance. By doing this, we end up with a 3D model from the flat curves. Remember that you need to convert this path into a &lt;em&gt;mesh&lt;/em&gt; before you can export it as an &lt;em&gt;OBJ&lt;/em&gt; file. An OBJ is format preferred by &lt;a href=&quot;http://www.shapeways.com/&quot;&gt;Shapeways&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Shapeways are a company based over in Sweden and I've used them before. They recommend using &lt;a href=&quot;http://meshlab.sourceforge.net/&quot;&gt;Meshlab&lt;/a&gt; to tidy up your OBJ file and also &lt;a href=&quot;http://www.netfabb.com/&quot;&gt;NetFabb&lt;/a&gt; which helps with the scaling. In this instance, I just guessed with Blender and kept uploading a newer version till it seemed right. I went with a bronze looking metal. 3 weeks later, it arrived at the office looking better than I'd hoped.&lt;/p&gt;

&lt;p&gt;Of course, all jewellery needs a box. I figured laser cutting a box would be perfect.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7161/6539947051_00b4584b3e.jpg&quot; alt=&quot;box&quot; /&gt;&lt;/p&gt;

&lt;p&gt;In order to do this, I used &lt;a href=&quot;http://www.qcad.org/&quot;&gt;QCad&lt;/a&gt; and an amazing little python script called &lt;a href=&quot;http://www.thingiverse.com/thing:404&quot;&gt;Boxotron&lt;/a&gt; which creates a set of DXF files (which you can check in QCad or Inkscape). Using a laser cutter and 5mm acrylic, I came up with a box that sort of worked for me. I then took the name Katie, translated it into Japanese and exported the text as a BMP which allows for laser engraving. Placing the piece in the laser cutter was the final stage.&lt;/p&gt;

&lt;p&gt;Actually, the final stage involved chatting with a jeweller at &lt;a href=&quot;http://csm.arts.ac.uk&quot;&gt;Central St Martins&lt;/a&gt; who told me that the findings and chains I would need should be bought from &lt;a href=&quot;http://www.cooksongold.com/&quot;&gt;Cooksongold&lt;/a&gt; who duly delievered the silver rope chain and other parts I needed to create the final piece.&lt;/p&gt;

&lt;p&gt;Overall, I'm really happy with the result, and even happier that The Curator likes it.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Lowry to Life</title>
   <link href="http://lab.section9.co.uk/2011/12/05/Lowry-to-Life.html"/>
   <updated>2011-12-05T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2011/12/05/Lowry-to-Life</id>
   <content type="html">&lt;object width=&quot;601&quot; height=&quot;338&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=33123038&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00adef&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=33123038&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00adef&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;601&quot; height=&quot;338&quot;&gt;&lt;/embed&gt;&lt;/object&gt;


&lt;p&gt;While I was up in the North, working on some personal projects, I was put in touch with a couple of lovely chaps, Alastair Eilbeck and James Bailey; two artists working on some interesting projects. They came to me with an idea for promoting The University of Salford and The Lowry. I've been a fan of some of Lowry's paintings and this was an opportunity not to be missed.&lt;/p&gt;

&lt;p&gt;The idea was to take members of the public into the painting of &lt;a href=&quot;http://www.thelowry.com/gifts-and-souvenirs/prints-and-limited-editions/piccadilly-gardens-1954&quot;&gt;Piccadilly Gardens&lt;/a&gt;. To do this, I worked with the &lt;a href=&quot;http://www.asus.com/Multimedia/Motion_Sensor/Xtion_PRO/&quot;&gt;ASUS Xtion&lt;/a&gt; and the OpenNI toolkit to extract the skeletons of the passers-by.&lt;/p&gt;

&lt;p&gt;The Real location is the painting  and live people are converted to lifesize Lowry characters ( we set up the stage so that it matched the painting perspective). A combination of live people beamed from the real location and those in Salford, shown as small Lowry characters within the real painting (foreground and midground) made the installation complete.&lt;/p&gt;

&lt;p&gt;This is all quite straight-forward but of course, there are many problems. The first is the issue of calibration. Most calibrations with the kinect are personal and then stored for later use when the Kinect/Xbox actually recognises you. This is, of course, not practical in this situation, so we calibrated the system with Alastair and James and used that for all the participants.&lt;/p&gt;

&lt;p&gt;The second issue is the environment. The Kinect and Xtion are designed to work indoors, preferably with a solid wall behind the player. We had none of these so we spent a long time testing, the results of which you can see here.&lt;/p&gt;

&lt;object width=&quot;480&quot; height=&quot;360&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/Npw1tbOMHqk?version=3&amp;amp;hl=en_US&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/Npw1tbOMHqk?version=3&amp;amp;hl=en_US&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;480&quot; height=&quot;360&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;


&lt;p&gt;It seems that the Xtion performs slightly better than the Kinect but the problem of tracking is a big issue. Data is often missed or incorrect. This means an attractive and artistic solution is needed. We hit on the idea of recreating the characters as puppets. This is where the wonderful &lt;a href=&quot;http://box2d.org/&quot;&gt;Box2D Library&lt;/a&gt; came in so handy. It's a fantastic library, so donate to them if you use it.&lt;/p&gt;

&lt;p&gt;Working with puppets gave a much nicer effect that felt in-keeping with the Lowry style.&lt;/p&gt;

&lt;p&gt;Of course, there is more. The University of Salford wanted the display to run over two sites. The participants in the gardens would appear inside a painting, hanging on the wall at the Lowry itself (it turned out to be at Salford University but nevermind). In order to to make this work, I wrote a simple TCP server/client setup with the &lt;a href=&quot;http://www.boost.org/doc/libs/1_48_0/doc/html/boost_asio.html&quot;&gt;boost::asio&lt;/a&gt; libraries that seemed to work quite well. As this is already a part of Cinder this could be integrated seemlessly.&lt;/p&gt;

&lt;p&gt;Everyone on this project was a hero, none more so than the illustrator Maria Pearson. Without her input, this would not have worked. Maria needed to create 4 views for the same character which were then mapped using a rather large XML file to the puppets themselves.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://lab.section9.co.uk/images/characters.jpg&quot; alt=&quot;Lowry Cutout Characters&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Initially, this process was quite time consuming, so extra features were added to the program to enable faster character creation. At one point, I thought we may need to actually create a seperate editor program but that turned out not to be the case.&lt;/p&gt;

&lt;p&gt;It turned out to be a big event. It was covered in the &lt;a href=&quot;http://menmedia.co.uk/manchestereveningnews/news/s/1464384_hi-tech-display-lets-you-join-lowrys-matchstick-men&quot;&gt;Manchester Evening News&lt;/a&gt; and &lt;a href=&quot;http://www.youtube.com/watch?v=LhSUx_MlMAk&amp;amp;feature=youtu.be&amp;amp;t=3m23s&quot;&gt;BBC North West Tonight&lt;/a&gt; as well as the &lt;a href=&quot;http://www.bbc.co.uk/news/uk-england-manchester-15643875&quot;&gt;BBC News Website&lt;/a&gt;&lt;/p&gt;

&lt;object width=&quot;640&quot; height=&quot;360&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/LhSUx_MlMAk?version=3&amp;amp;hl=en_US&amp;amp;start=203&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/LhSUx_MlMAk?version=3&amp;amp;hl=en_US&amp;amp;start=203&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;640&quot; height=&quot;360&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;


&lt;p&gt;iI'd rather hoped the Manchester weather would actually do its usual thing of being overcast and grey as the Xtion performs better in such conditions. Sadly, this didn't happen at all. Terrible! You can never, EVER rely on the weather, even in a place as predictable as Manchester.&lt;/p&gt;

&lt;p&gt;One interesting and tricky aspect was the idea of history. Alastair and Jimi wanted people to appear on the painting, even if there were no actual participants at that time in the gardens. This meant saving certain characters to disk. For this, I decided to use &lt;a href=&quot;http://www.mongodb.org/&quot;&gt;MongoDB&lt;/a&gt; with the C++ binding. The problem here is that although Cinder uses Boost, the version I had bundled was incompatibile with the version used by Mongo. Disaster! In the end, I needed to use both and simply do the usual hack of only passing simple types between the two classes. Essentially, the puppet strings are saved to the database a few times each second and recalled when there are no players on the scene.&lt;/p&gt;

&lt;p&gt;Technically, I couldn't have done this without Github and Cinder. I've written my own classes to take care of the skeletons and players and swap them in and out as they appear and disappear. Ultimately, github is great for messing with your code, revamping and refactoring as needed. Cinder is a great tool and it's use of boost certainly helped.&lt;/p&gt;

&lt;p&gt;Personally, I learnt quite a lot on this job. It has been going for sometime, and progress had been quite sporadic. We'd considered many different ways of illustrating the characters, setting up the network and indeed, getting the code to work on Jimi's computers. There was one long session that lasted about 3 days over in Manchester and the strain was beginning to show&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm7.staticflickr.com/6111/6231847697_0e73bf9cf2.jpg&quot; alt=&quot;Working late at Amaze&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Although James with his boundless energy certainly helped!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm7.staticflickr.com/6116/6231844353_8ee7631f7b.jpg&quot; alt=&quot;Jimi&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Overall, one couldn't ask for better collaborators. A fun project that made people laugh, that paid on time and helped me learn new things. That, for me, is the perfect project.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Numismatic Fun</title>
   <link href="http://lab.section9.co.uk/2011/11/30/Numismatic.html"/>
   <updated>2011-11-30T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2011/11/30/Numismatic</id>
   <content type="html">&lt;p&gt;&lt;img src=&quot;images/sift2.jpg&quot; alt=&quot;SIFT&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I've been working on a small project for the excellent girlfriend involving the recognition of coins. I've been looking into some various different applications that attempt to do this using computer vision. Turns out its a hard program.&lt;/p&gt;

&lt;p&gt;I've also learnt a new word, clearly!&lt;/p&gt;

&lt;p&gt;A small program called &lt;a href=&quot;http://itunes.apple.com/gb/app/scybot-coin-counter/id445453916?mt=8&quot;&gt;Scybot&lt;/a&gt; attempts to count US coins with the iPhone camera. Sadly, it doesnt work. It turns out it simply uses a &lt;a href=&quot;http://en.wikipedia.org/wiki/Hough_transform&quot;&gt;Hough Transform&lt;/a&gt; by the looks of things. I tried this and here are the results:&lt;/p&gt;

&lt;object width=&quot;480&quot; height=&quot;360&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/CPrVdBdsglQ?version=3&amp;amp;hl=en_US&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/CPrVdBdsglQ?version=3&amp;amp;hl=en_US&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;480&quot; height=&quot;360&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;


&lt;p&gt;Sadly, it isn't great on coins that aren't round or at least, not easily. It seems that perhaps training a haar classifier might be the best option? &lt;a href=&quot;http://achuwilson.wordpress.com/2011/07/01/create-your-own-haar-classifier-for-detecting-objects-in-opencv/&quot;&gt;This blog post&lt;/a&gt; is a great introduction to the idea of training a classifier. It's an intensive task and the jury is still out on whether or not this will actually work. I'll be sure to post my results here when I get them.&lt;/p&gt;

&lt;p&gt;Currently, my classifier is still running, as has been for the last 3 days!&lt;/p&gt;

&lt;p&gt;At the moment, most of the research seems to be based around the recognition of old coins as oppose to new ones?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Bag of Holding +10</title>
   <link href="http://lab.section9.co.uk/2011/11/21/Bag-of-Holding-plus-10.html"/>
   <updated>2011-11-21T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2011/11/21/Bag-of-Holding-plus-10</id>
   <content type="html">&lt;p&gt;&lt;img src=&quot;http://farm7.staticflickr.com/6019/6378825121_4e9388c032.jpg&quot; alt=&quot;Bag of Holding&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It most certainly is. I've been sick and tired of bags that just don't cut it. They don't hold enough, they are awkward and they simply break. After the last one died with my laptop in it, I made a bag myself in a day that lasted quite a while, but it was one hell of a hack. I didn't quite like that. Thanks to the amazing Katie, we came up with something a bit nicer.&lt;/p&gt;

&lt;p&gt;It's made of ripstop nylon and webbing - both bought from eBay. It has a reflective strip and a plastic clip with stips of velcro under the flap and inside the pockets.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm7.staticflickr.com/6056/6378826867_bf10e495c2.jpg&quot; alt=&quot;Bag of Holding&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I decided it needed to have both messenger strips and rucksack straps because no matter how good the shoulder strap, if you are taking weight whilst cycling, the bag will slip to down near your legs. However, when walking and trying to reach for your keys, you need the shoulder strap.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm7.staticflickr.com/6222/6378828361_24de53b1c0.jpg&quot; alt=&quot;Bag of Holding&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The pockets are internal to stop people theiving from them if the flap is loose. There is plenty of space for a lot of gear, which is great. The whole thing is double or triple stiched and is damn tough.&lt;/p&gt;

&lt;p&gt;The whole project was a massive learning curve for me as I had to learn a lot of extra sewing skills. The planning and the order that things were done in was quite a challenge for me. The sewing machine used was an older singer, with a proper footpedal. It took a while for me to get used to it, but in the end it was lovely to use. Of course, such things were not designed to go through several layers of thick nylon. Nevertheless, we got there in the end.&lt;/p&gt;

&lt;p&gt;It's one of these things whereby I could have cut corners (no pun intended) or just not bothered but then, when you are lugging things around everyday and getting stressed in these small ways, it pays to fix the small things, as these are the things that'll get to you in the end. This was a quality move. I'm quite proud of it. Lets hope it lasts.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Smiling-Film-Student-Geekery</title>
   <link href="http://lab.section9.co.uk/2011/11/09/Smiling-Film-Student-Geekery.html"/>
   <updated>2011-11-09T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2011/11/09/Smiling-Film-Student-Geekery</id>
   <content type="html">&lt;object width=&quot;480&quot; height=&quot;320&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/mhAcRlNq9JU?version=3&amp;amp;hl=en_US&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/mhAcRlNq9JU?version=3&amp;amp;hl=en_US&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;480&quot; height=&quot;320&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;


&lt;p&gt;The above video was recorded by Opheila Finke; one of the students at CSM. She came to me with a request that blew me out of the water because I'd had a similar idea myself. She wanted all the machines in our lab to play a video at the same time. I've spent quite a bit of time on this but I'd never gotten to the stage where I could take over a screen remotely. It turns out this is indeed possible with one subtle command.&lt;/p&gt;

&lt;p&gt;Using the screensaver, written in Quartz Composer by a colleague of mine, Sion Fletcher, seemed like the best idea as we could probably activate it remotely. Since I had the list of IP addresses and full sudo on all the boxes, setting up the screensaver was a doddle. Most of the leg work had been done.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/System/Library/Frameworks/ScreenSaver.framework/Versions/
A/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine 
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Running this starts the screen saver. So far so good. Of course, you'll get a lot of errors if you try and run this remotely over SSH, even with Sudo. These of you used to Linux (and lets face it, you are if you read this) will know all about XSessions and similar. Something like this didnt work:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo su student -c '/System/Library/Frameworks/ScreenSaver.framework/Versions/A
/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine'
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now &lt;em&gt;student&lt;/em&gt; is the logged in user and therefore, I figured we could attach to their XSession (or whatever the OSX equivalent is). This means there has to be a logged in user for attachment to work; I don't know of any way to connect when just the login screen is visible.&lt;/p&gt;

&lt;p&gt;The problem is, this didn't work! I was pulling my hair out until a good friend, MS7821 on the #london-hack-space IRC channel pointed out that I wasn't setting the environment over the &lt;em&gt;su&lt;/em&gt; command. Now I'd seen this before when playing with the Python subprocess module - you could indeed set the ENV variable. Can you spot the difference in the working command?&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo su - student -c '/System/Library/Frameworks/ScreenSaver.framework/Versions/
A/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine'
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The &lt;em&gt;-&lt;/em&gt; is quite important after the su. It sets up the environment properly and that's great - it means the process can attach to the screen itself.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm7.static.flickr.com/6100/6328718926_27f90ba92a.jpg&quot; alt=&quot;1.8 tonnes of iMac doing my evil bidding&quot; /&gt;&lt;/p&gt;

&lt;p&gt;If you scroll in to 2:45 on the video, you can see the effect we came up with. It's great when a student has the same or similar idea as you. You get to look like the worlds greatest hero when it goes well. Smiles, hugs and laughter was had! That day was a good day!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>MongoDB Fun with Cinder</title>
   <link href="http://lab.section9.co.uk/2011/11/02/Mongo-Fun.html"/>
   <updated>2011-11-02T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2011/11/02/Mongo-Fun</id>
   <content type="html">&lt;p&gt;So I've been playing around with &lt;a href=&quot;http://www.mongodb.org&quot;&gt;MongoDB&lt;/a&gt; for a little while now. Im certainly no expert but I get the feeling its pretty darn handy for smaller apps and webservers doing simple things or many, many small things. At the moment, I'm using it with an art installation, written in &lt;a href=&quot;http://libcinder.org/&quot;&gt;Cinder&lt;/a&gt; that records the positions of various figures over time. The data is not very relational (in fact, it isn't at all) and so having a mongo setup seemed like the thing to do.&lt;/p&gt;

&lt;p&gt;Running mongob on OSX is quite easy if you use &lt;a href=&quot;https://github.com/mxcl/homebrew&quot;&gt;Brew&lt;/a&gt; (and you &lt;em&gt;really&lt;/em&gt; should be). Install mongo and then call:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo mongod run --config \
/usr/local/Cellar/mongodb/1.8.1-x86_64/mongod.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You can also send the &lt;em&gt;--rest&lt;/em&gt; option which allows you to get some interesting stats on what is going on, which is handy.&lt;/p&gt;

&lt;p&gt;At first, I used a &lt;a href=&quot;http://nodejs.org/&quot;&gt;Node.js&lt;/a&gt; front-end and sent all my database queries over the network interface. Thats generally a pretty bad way of doing things. I started to look into the C++ driver and I began to hit some interesting problems.&lt;/p&gt;

&lt;p&gt;I downloaded the &lt;a href=&quot;http://www.mongodb.org/pages/viewpage.action?pageId=133415&quot;&gt;Mongo C++ Driver&lt;/a&gt; and compiled up their example. The first thing is to generally follow the rules for the linux build.&lt;/p&gt;

&lt;p&gt; This runs quite well but trying to integrate this with &lt;a href=&quot;http://libcinder.org/&quot;&gt;Cinder&lt;/a&gt; caused a lot of problems, largely because both of them do different things with boost which is no good. I had a real struggle on my hands. In the end, I couldn't quite figure out what to do so I used a classic solution; simply include the headers seperately and communicate between Mongo and Cinder using &lt;em&gt;std::string&lt;/em&gt; only. Its not the best thing to do but it works.&lt;/p&gt;

&lt;p&gt;Essentially create a class that bridges the gap and only includes the standard libraries. I rebuilt mongo with the version of boost that comes with cinder which was &lt;em&gt;1.44&lt;/em&gt; when I built my version. This can be done by downloading the particular version from the &lt;a href=&quot;http://www.boost.org/&quot;&gt;boost website&lt;/a&gt; and installing it, then rebuilding mongo. Its not the best solution but it does work.&lt;/p&gt;

&lt;p&gt;As mongo is running, you can pull up your terminal and login to your database with&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;mongo &amp;lt;databasename&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You can issue commands such as:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;db.&amp;lt;table&amp;gt;.count()
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;db.&amp;lt;table&amp;gt;.drop()
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;and many other things besides. So far, the integration works quite well providing you have the right boost libs for both Cinder and Mongo. Performance wise, I've not had chance to find out, though we will in a week or so.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>OSX Admin for the lulz</title>
   <link href="http://lab.section9.co.uk/2011/10/26/OSX-Admin.html"/>
   <updated>2011-10-26T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/10/26/OSX-Admin</id>
   <content type="html">&lt;p&gt;At one of my jobs, I've been thrown into the deep end when it comes to sysadmin. I've always done this a little but largely on a Linux based platform. As I'm involved with an Arts University, most of the machines here are Apple based. It's a little bit different in certain cases and there are some fun things already installed. The first is the &lt;em&gt;screen sharing&lt;/em&gt; app.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/System/Library/CoreServices/Screen Sharing.app
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This program is quite useful - it's a great way for doing remote admin. In addition, if another user is logged in &lt;em&gt;you get to see what they are doing&lt;/em&gt; - It's genius and also a little scary.&lt;/p&gt;

&lt;p&gt;Sometimes its not setup remotely. This will do that for you:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo sh -c &quot;/bin/echo -n enabled &amp;gt; 
/Library/Preferences/com.apple.ScreenSharing.launchd&quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;So being a Linux guy mostly, I aim for the command line. I have almost 100 Apple iMacs at my command so of course, I got to it. Firstly, SSH keys for password-less login were needed. That means:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;create the .ssh directory&lt;/li&gt;
&lt;li&gt;create authorized_hosts within the .ssh dir&lt;/li&gt;
&lt;li&gt;copy over the contents of your own id_rsa.pub&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;This took quite a while as you can imagine. But even before this, I had no idea of the IP addresses for the machines. There is no internal DNS or anthing so out comes out &lt;em&gt;nmap&lt;/em&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;nmap -oX results.xml -sn -n 10.130.144.0/24
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I love nmap and I need to learn how to use it better. This produces an XML list of the machines that are currently running. Sadly, I could not figure out how to return &lt;em&gt;just&lt;/em&gt; the iMacs so there are some Windows XP machines and routers in there too.&lt;/p&gt;

&lt;p&gt;Of course, XML is not so bash friendly (unless you know of cool XML parsing in bash - hit me up if you do). This is where Python comes in:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;from lxml import etree
f = open(args.iplist,'r')
xml = f.read()
f.close()
root = etree.fromstring(xml)
for element in root.iter():
    if element.tag.__str__() == 'address':
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;em&gt;subprocess&lt;/em&gt; is still a bit of a dark art to me. The &lt;em&gt;shell=True&lt;/em&gt; bit is quite important as it opens a remote shell. Also the &lt;em&gt;-t&lt;/em&gt; argument to ssh helps.&lt;/p&gt;

&lt;p&gt;The beauty of OSX is that there are command line versions of various GUI programmers such as:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo installer -pkg /Volumes/Google\ SketchUp\ 8.0\ 
\(English\)/Google\ SketchUp\ 8.0\ Installer.mpkg -target
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This allows you to install things inside an mpkg. Very handy. Mounting DMG files is also easy with:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;hdid
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Unmounting, you can use:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;umount
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Just as you would on the &lt;em&gt;nix&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The problem with using &lt;em&gt;sudo&lt;/em&gt; a lot is that we need to keep typing passwords all the time. You can use the following &lt;em&gt;ENV&lt;/em&gt; variable to launch a window in OSX to type this in:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;env = {'SSH_ASKPASS':'/Users/oni/Projects/Scripts/ssh-askpass', 
'DISPLAY':'0', 'SUDO_ASKPASS':'/Users/oni/Projects/Scripts/ssh-askpass'}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;askpass is a bash program that looks like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#! /bin/sh  
#
# An SSH_ASKPASS command for MacOS X 
#
# Author: Joseph Mocker, Sun Microsystems  

#
# To use this script:
#     setenv SSH_ASKPASS &quot;macos-askpass&quot;
#     setenv DISPLAY &quot;:0&quot;
#  
TITLE=${MACOS_ASKPASS_TITLE:-&quot;SSH&quot;}  
DIALOG=&quot;display dialog \&quot;$@\&quot; default answer \&quot;\&quot; with title \&quot;$TITLE\&quot;&quot;
DIALOG=&quot;$DIALOG with icon caution with hidden answer&quot;  
result=`osascript -e 'tell application &quot;Finder&quot;' -e &quot;activate&quot;  -e &quot;$DIALOG&quot; -e 'end tell'`  
if [ &quot;$result&quot; = &quot;&quot; ]; then
    exit 1
else
    echo &quot;$result&quot; | sed -e 's/^text returned://' -e 's/, button returned:.*$//'
    exit 0
fi  
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Notice the handy &lt;em&gt;osascript -e&lt;/em&gt; command. Thats pretty handy as well.&lt;/p&gt;

&lt;p&gt;I believe there is a python library for doing simultaneous installs as well called &lt;a href=&quot;http://docs.fabfile.org/en/1.3.1/index.html&quot;&gt;Fabric&lt;/a&gt; that I reckon will make this go uber-smooth in the future!&lt;/p&gt;

&lt;p&gt;Finally, to remove password entru for sudo, use:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo visudo
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;adding the following line:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;username&amp;gt;  ALL=NOPASSWD: ALL
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;replacing &lt;username&gt; with the user you are using to do all the installs. So far, Im getting there. I will have many devices under my command! It was grossly inefficent but a good way to learn a great many things. Remember the process is what counts people!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Solar Minty Boost Mark2</title>
   <link href="http://lab.section9.co.uk/2011/10/19/Solar-Minty-Mk2.html"/>
   <updated>2011-10-19T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/10/19/Solar-Minty-Mk2</id>
   <content type="html">&lt;p&gt;I've had this project on the go for a while. I'm a believer in greener energy, especially when it's also convenient. The original solar minty boost was a lash-up between a &lt;a href=&quot;http://www.ladyada.net/make/mintyboost/&quot;&gt;Minty Boost&lt;/a&gt; a &lt;a href=&quot;http://www.sparkfun.com/products/726&quot;&gt;Sparkfun Lipoly Charger&lt;/a&gt; and a solar panel I bought from eBay on a whim. The problem was it wouldn't charge the lipoly battery fully, because &lt;em&gt;and I could be wrong here&lt;/em&gt; the average voltage was not enough to actually charge the lipoly. The solar panel doesn't always kick out enough volts to charge the battery, especially in the UK.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm7.static.flickr.com/6019/6258917818_862b88d4df.jpg&quot; alt=&quot;Solar Mk 2&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The wonderful Lady Ada has released a new &lt;a href=&quot;http://www.adafruit.com/products/390&quot;&gt;Solar LiPoly Charger&lt;/a&gt; which I figured would suit my needs perfectly. It has a whopping great capacitor on it which figures. Lashing this together with the existing parts resulted in the Mark2&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm7.static.flickr.com/6156/6258392593_25b5d744cc.jpg&quot; alt=&quot;solar mk 2&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The issue I had was in the housing. I thought about project boxes but couldn't find any. I thought about using the laser cutter to make one but again, it was too bulky and too complicated. I was getting stressed until a chap called Chris at &lt;a href=&quot;http://london.hackspace.org.uk&quot;&gt;London Hackspace&lt;/a&gt; came up with the idea to use an Altoids tin. &lt;em&gt;Classic&lt;/em&gt; - It works really well with a few holes cut into it and it looks the part. I added some &lt;a href=&quot;http://sugru.com/&quot;&gt;sugru&lt;/a&gt; around the usb socket and nuts to hold things in place, and also, for the &lt;em&gt;geek cred!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm7.static.flickr.com/6106/6258919500_acc1ec7bae.jpg&quot; alt=&quot;solar mk2&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This project has cost too much and taken too much time but I've learnt one important lesson - Dont get too blinkered. I stuck it out but if it hadn't been for the suggestion from a friend, I'd have never finished and gotten upset. Sometimes, it's important to take a step back and relax.&lt;/p&gt;

&lt;p&gt;Time for a field trial!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Late Night Coding</title>
   <link href="http://lab.section9.co.uk/2011/10/14/Late-Night-Coding.html"/>
   <updated>2011-10-14T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/10/14/Late-Night-Coding</id>
   <content type="html">&lt;p&gt;I've been quite busy of late, again, not with the real job but my &lt;em&gt;real&lt;/em&gt; job. Recently, I was up in Manchester at the &lt;a href=&quot;http://www.amaze.com&quot;&gt;Amaze&lt;/a&gt; offices, working solidly for 3 days on a kinect based project for the &lt;a href=&quot;http://www.thelowry.com&quot;&gt;Lowry&lt;/a&gt;. It's still under wraps at the moment but progress has been made. The other partners felt the need to spend time getting the basics nailed. Working piecemeal on a project is only fine for so long. When things need to get done, the tough get going.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm7.static.flickr.com/6111/6231847697_0e73bf9cf2.jpg&quot; alt=&quot;Looking a little knackered I think&quot; /&gt;&lt;/p&gt;

&lt;p&gt;For 3 days, there was nothing but drizzle and overcast skies. It's fair to say that Manchester's awful weather actually helps with the Kinect's camera. In bright sunlight, forget it! I never thought I'd be glad to see the greyeness of the north.&lt;/p&gt;

&lt;p&gt;To be complete, we tested our setup in the evening also. It turned out that night-time results are better though only marginally.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm7.static.flickr.com/6167/6231840525_f420483561.jpg&quot; alt=&quot;Looking a little knackered I think&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Testing in Manchester at night does have unique problems. Standing around with a bright &lt;em&gt;apple&lt;/em&gt; logo attracts a certain kind of person. A bunch of scallies decided to pop over and have a chat. To be fair, we actually learnt a lot - they were playful and wanted to see how the code worked. Some of them had only about 3 teeth which was quite worrying. Neverthess, one of them asked what I'd written the code in. I told him Cinder and he said he had written some basic 'point and click' games at college. I got the impression that secretly, he wanted to be a geek. I hope I've helped him with that.&lt;/p&gt;

&lt;p&gt;Since I've caught a cold as well, I'm quite knackered, but if you are in Manchester early next month, be sure to checkout Piccadilly Gardens.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Defeating Firewalls</title>
   <link href="http://lab.section9.co.uk/2011/10/05/Defeating-Firewalls.html"/>
   <updated>2011-10-05T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/10/05/Defeating-Firewalls</id>
   <content type="html">&lt;p&gt;In addition to my own business, I work part-time over at the &lt;a href=&quot;http://www.arts.ac.uk&quot;&gt;University of the Arts&lt;/a&gt; helping out students and making cool things. The problem with such large places are their draconian I.T rules. Of course the inquistive finds ways around these. I have a pressing need for SSH - it's something any tech professional can't do without. You just can't. Port 22 is the most sacred of all ports and having it blocked was a pain.&lt;/p&gt;

&lt;p&gt;It was suggested that I use &lt;a href=&quot;https://www.torproject.org/&quot;&gt;tor&lt;/a&gt; which I've had installed for a while on my Mac. I found a handy little script using the amazing &lt;a href=&quot;http://netcat.sourceforge.net/&quot;&gt;netcat&lt;/a&gt; to move data over Vidalia:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ssh -o ProxyCommand=&quot;nc -X 4 -x localhost:9050 %h %p&quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This worked fine but the problem with tor has always been it's speed. Mileage certainly varies but even SSH proved too unresponsive. I needed another option.&lt;/p&gt;

&lt;p&gt;Typically, a second IP is needed to proxy traffic over a port such as 80. The problem is I didn't have a second machine available (my machine at home isn't setup yet for this kind of thing). However, after chatting with the &lt;em&gt;#london-hack-space&lt;/em&gt; crew, I was reminded of &lt;a href=&quot;http://www.rutschle.net/tech/sslh.shtml&quot;&gt;sslh&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;sslh provides a proxy service on your webserver to effectively split any traffic arriving on port 443. Now I run a few websites on port 443 so this solution seemed perfect. sslh is included in the debian and ubuntu repositories. The only configuration needed is to swap out the listen addresses in nginx or apache to localhost and place sslh infront, listening on your servers external ip.&lt;/p&gt;

&lt;p&gt;The speed is certainly much greater. Now I can get to work fixing my nginx setup!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Node and Mongo</title>
   <link href="http://lab.section9.co.uk/2011/09/25/Node-and-Mongo.html"/>
   <updated>2011-09-25T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/09/25/Node-and-Mongo</id>
   <content type="html">&lt;p&gt;Recently, I've been working with a good client on a project that requires network communication between two sites and provision for a history feature. One of the collaborators is a fan of &lt;a href=&quot;http://www.mongodb.org/&quot;&gt;mongodb&lt;/a&gt; and &lt;a href=&quot;http://nodejs.org/&quot;&gt;nodejs&lt;/a&gt; - two rather nifty projects that I've been meaning to work with for a while. I had no idea but dived in anyway.&lt;/p&gt;

&lt;p&gt;Node appears to have a set of modules which you can install with &lt;a href=&quot;http://npmjs.org/&quot;&gt;npm&lt;/a&gt;. These modules are placed within the directory in which you run npm which is presumably where your node script is. One useful modules is &lt;a href=&quot;http://expressjs.com/&quot;&gt;express&lt;/a&gt; which sets up basic handling for a website. You can then write code such as:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;var Express = require('express');
var app = Express.createServer();

app.get('/', function(req, res){
    res.send('Hello World');
});

app.listen(3001);
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Of course, post requests, paths and all the usual gubbins are supported.&lt;/p&gt;

&lt;p&gt;Mongo has a set of drivers that work with node as well. I used the &lt;a href=&quot;https://github.com/christkv/node-mongodb-native&quot;&gt;Mongodb native driver&lt;/a&gt; which seemed pretty good, &lt;em&gt;except&lt;/em&gt; for one important thing - the syntax is not quite the same as the examples given on the mongodb website. It took me sometime to realise why my queries weren't working.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;var Db = require('mongodb').Db;
var Connection = require('mongodb').Connection;
var Server = require('mongodb').Server;

var client = new Db('testing', new Server(&quot;127.0.0.1&quot;, 27017, {})),
    test = function (err, collection) {
    var Figure = {id: 1, limbs : [ [1.0,5.0,10.0] , [-1,1,1]  ] };
    collection.insert( Figure , function(err, docs) {

        // Locate all the entries using find
        collection.find().toArray(function(err, results) {
            console.log(results);    
            // Let's close the db
            client.close();
        });
    });
};

client.open(function(err, p_client) {
    client.collection('test_insert', test);
});
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You can install mongodb with &lt;a href=&quot;https://github.com/mxcl/homebrew&quot;&gt;homebrew&lt;/a&gt; and run it locally on a mac with&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo mongod run --config /usr/local/Cellar/mongodb/1.8.1-x86_64/mongod.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Fairly straight forward. Sadly, for use in this project, it turned out that using boost::asio with tcp::iostreams are superior. I still haven't managed to work with streams in nodejs yet, though they do exist.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Running with Nginx</title>
   <link href="http://lab.section9.co.uk/2011/09/16/Running-with-nginx.html"/>
   <updated>2011-09-16T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/09/16/Running-with-nginx</id>
   <content type="html">&lt;p&gt;So I've decided to play with &lt;a href=&quot;http://wiki.nginx.org/&quot;&gt;Nginx&lt;/a&gt; on my server, leaving Apache behind. I must admit, I've had a lot of fun with it. It appears to be a good front end for funneling web requests to other services. At the moment, I have various things running on my server such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Two sites running &lt;a href=&quot;http://www.djangoproject.com/&quot;&gt;Django&lt;/a&gt; with &lt;em&gt;Psycopg&lt;/em&gt; connected to a &lt;a href=&quot;www.postgresql.org&quot;&gt;Postgresql&lt;/a&gt; database.&lt;/li&gt;
&lt;li&gt;A &lt;a href=&quot;nodejs.org&quot;&gt;Node.js&lt;/a&gt; install that talks to a &lt;a href=&quot;www.mongodb.org&quot;&gt;MongoDB&lt;/a&gt; database for a top secret project&lt;/li&gt;
&lt;li&gt;A &lt;a href=&quot;http://www.mediawiki.org&quot;&gt;Mediawiki&lt;/a&gt; setup that runs my own journal and ideas. Currently talks to mysql running with &lt;em&gt;php5-fpm&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Several static pages as and when needed&lt;/li&gt;
&lt;li&gt;Python &lt;em&gt;uWSGI&lt;/em&gt; serving for the &lt;a href=&quot;http://saito.section9.co.uk&quot;&gt;Denied&lt;/a&gt; application&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;So there is a fair bit going on that Nginx needs to take care of. Rather than use the stock Lucid install of Nginx I downloaded the source and built it with:&lt;/p&gt;

&lt;p&gt; sudo ./configure --prefix=/opt/nginx --user=www-data --group=www-data --with-http_ssl_module --with-ipv6&lt;/p&gt;

&lt;p&gt;You can then hit make. There are lots of modules and other things you can build. At the moment, ssl and ipv6 are the most important to me right now.&lt;/p&gt;

&lt;p&gt;Nginx config files are quite easy to understand and it's quite easy to get a site up and running. In the case of Django, I went with the &lt;a href=&quot;https://docs.djangoproject.com/en/dev/howto/deployment/fastcgi/&quot;&gt;FastCGI&lt;/a&gt; route which seemed the easiest at the time (uWSGI might be better). This means you need to run your Django in a seperate process. Using a Linux &lt;em&gt;screen&lt;/em&gt; you can do something like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;su www-data -c './manage.py runfcgi method=prefork daemonize=false\ 
socket=/tmp/section9.sock pidfile=django.pid maxrequests=100'
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The &lt;em&gt;maxrequests&lt;/em&gt; variable is very important. Without it, I noticed a lot of processes waiting for IO when I studied the site using &lt;em&gt;top&lt;/em&gt;. So far, that little line has helped make things faster.&lt;/p&gt;

&lt;p&gt;You can then setup Nginx with Django a little like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;server {
    listen 80;
    server_name www.anneblundell.com;
    rewrite ^/(.*) http://anneblundell.com/$1 permanent;
}

server {
    server_name anneblundell.com;

    access_log  /srv/www/anneblundell.com/logs/nginx_access.log;
    error_log /srv/www/anneblundell.com/logs/nginx_error.log;

    location /media {
    root /srv/www/anneblundell.com/public_html/AnneBlundell/;
}

location / {
    root /srv/www/anneblundell.com/public_html/AnneBlundell;
    fastcgi_pass unix:/tmp/anneblundell.sock;

    fastcgi_param PATH_INFO $fastcgi_script_name;

    fastcgi_param REQUEST_METHOD $request_method;
    fastcgi_param CONTENT_TYPE $content_type;
    fastcgi_param CONTENT_LENGTH $content_length;
    fastcgi_param QUERY_STRING $query_string;
    fastcgi_pass_header Authorization;
    fastcgi_param  SERVER_ADDR        $server_addr;
    fastcgi_param  SERVER_PORT        $server_port;
    fastcgi_param  SERVER_NAME        $server_name;
    fastcgi_param  SERVER_PROTOCOL    $server_protocol; 
    fastcgi_intercept_errors off;
}   
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;So Django runs ok for now. You can write down all the &lt;em&gt;fastcgi_params&lt;/em&gt; in an include file to make things a little easier.&lt;/p&gt;

&lt;p&gt;But what about a simple Python Script? For Denied, I needed to query a text file, parse it, and present json on request. To do that, uWSGI came to mind. Use &lt;em&gt;pip&lt;/em&gt; to install uwsi and then:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo su -c &quot;uwsgi --pythonpath /srv/www/section9.co.uk/public_html/python\
 --uid www-data --module wsgi_configuration_module -s /tmp/uwsgi.sock&quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This creates a socket for which we can use with Nginx to grab our data. &lt;a href=&quot;http://kbeezie.com/view/circuits-nginx-uwsgi/&quot;&gt;This Guide&lt;/a&gt; is quite good for setting up Nginx to talk to a process.&lt;/p&gt;

&lt;p&gt;So Nginx takes care of a lot of things. One issue I have is dealing with Mediawiki. Annoyingly, there is quite a large slowdown in the move from Apache to Nginx and I've yet to find out the issue; likely it is my novice setup of php5-fpm. Quite annoying really.&lt;/p&gt;

&lt;p&gt;It's quite easy to setup static pages - simply copy the simple example config, soft link and you are done. I've yet to attempt a setup with &lt;em&gt;Ruby on Rails&lt;/em&gt; yet as Im reading into &lt;a href=&quot;https://github.com/blog/517-unicorn&quot;&gt;Unicorn&lt;/a&gt; and other such deployment strategies. I'll let you know how it goes.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Forefist Punch</title>
   <link href="http://lab.section9.co.uk/2011/09/09/Forefist-punch.html"/>
   <updated>2011-09-09T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/09/09/Forefist-punch</id>
   <content type="html">&lt;p&gt;I've caught up with a friend of mine over at &lt;a href=&quot;http://finiteattentionspan.wordpress.com/&quot;&gt;FiniteAttentionSpan&lt;/a&gt; and the subject of Taekwondo came up. There are some quite evocative images and lessons learnt there, that can be applied to other situations in life. I trained for about 6 years and it's been a rocky ride. Now I'm older, I look at the lessons learnt, the tenets and even my black belt thesis with different eyes.&lt;/p&gt;

&lt;p&gt;I've been thinking about the concept of &lt;a href=&quot;http://en.wikipedia.org/wiki/Flow_(psychology&quot;&gt;flow&lt;/a&gt; in programming and my general practice of computer science, graphics and art. When I trained in Taekwondo it took me at least 3 to 4 years before I had my first flow moment. I remember to this day, breaking two pieces of wood with a jumping reverse side kick. Its a cool move when done right and there was no &lt;em&gt;effort&lt;/em&gt; or rather, no &lt;em&gt;forcing&lt;/em&gt; of effort.&lt;/p&gt;

&lt;p&gt;But what did that take? There is the idea of 10,000 hours of exercise in a subject before you master it. But that's not the whole truth. Each hour needs feedback and explanation. You need to know what you did right and wrong, to get feedback from yourself and from someone who knows more than you do. Every lesson would involve the walking-stance forefist punch and the L-Stance front kick. Every time, we'd have to punch harder and faster and improve or be corrected. It certainly helped.&lt;/p&gt;

&lt;p&gt;Another friend of mine who programs a lot at &lt;a href=&quot;http://www.casa.ucl.ac.uk&quot;&gt;CASA&lt;/a&gt; has spoken to me often about the movement away from &lt;em&gt;real programming&lt;/em&gt; and towards the more mundane linking of various code snippets into a coherent whole. I think he's right. The bar has been raised whereby we can all produce a working product such as a web-service or iPhone app from other libraries, code from GitHub and similar. The real skill in programming isn't to do this, but only programmers can do this sort of thing well.&lt;/p&gt;

&lt;p&gt;Recently, I worked on a piece of code that was written in Java. The time constraints were tight and the code was not legible or well constructed. I came in and was immediately stressed out. I did my best to figure out things but it took me an age to get the program to a state where it could work. In the end, it did (and you'll see the results on Sky1 sometime) but the originator of the code confessed he wasn't a programmer. But there we have it. Unless you practice the forefist-punch of programming, you can't make the good stuff.&lt;/p&gt;

&lt;p&gt;Ok, this is probably well known in other disciplines but when you have been programming for a while and working for different clients and on different projects to tight deadlines, what exercise can one do that is similar to the forefist punch? Im not sure I know the answer. My previous little knightmare bash script might be seen as such a thing. Maybe its the python scraper I wrote to look for places to live in London? I suspect other programmers and creative types have their practices. The idea of the speedproject is one. Set a time limit and see how far you can get. Of course, the last thing you want to do is step back to something simple and non-job/non-client critical but I think your practice would improve.&lt;/p&gt;

&lt;p&gt;I suspect I'll need to break out the C book again :)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Knightmare Bash</title>
   <link href="http://lab.section9.co.uk/2011/08/31/Knightmare-Bash.html"/>
   <updated>2011-08-31T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/08/31/Knightmare-Bash</id>
   <content type="html">&lt;p&gt;So I came up with this today:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#!/bin/bash
a=$(echo $1 | tr '[:lower:]' '[:upper:]')
e=$(echo $a | sed 's/\(.\)/\1 /g')
echo -n &quot;SPELLCASTING: &quot;
for i in $e; do
    echo -n $i&quot; &quot;
    sleep 1
done;
echo &quot;&quot;
$1
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This little piece of bash script is the geekiest and therfore &lt;em&gt;coolest&lt;/em&gt; thing I've written for the past few weeks. But it's had me thinking a little about programming, life and the universe.&lt;/p&gt;

&lt;p&gt;It was born out of a semi-drunken chat with my good friend &lt;a href=&quot;http://www.casa.ucl.ac.uk/people/person.asp?ID=260&quot;&gt;Steve&lt;/a&gt;. After cooking a &lt;em&gt;rather splendid&lt;/em&gt; roast dinner, the conversation turned, as it inevitably does, to TV programmes we used to watch as kids. I don't know why that always happens after a certain age but it's something that has occurred between my friends and I many times. I suspect it's not just me either. Of course, we had to talk about &lt;a href=&quot;http://www.knightmare.com/&quot;&gt;Knightmare&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Steve hit on the idea of a spellcasting script of some kind so I thought I'd write one. I was bored at work this morning and figured it would be a good warm-up. I'm no bash ninja sadly, though I've often thought about learning more and there indeed is the rub. It's important to take little steps and to do that, you &lt;em&gt;have to want to take them&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I think this simple example is quite similar to the &lt;a href=&quot;http://www.vimeo.com/26788575&quot;&gt;Thermoptic Camouflage&lt;/a&gt; play-thing I wrote. It's what you might call a &lt;em&gt;speed project&lt;/em&gt;. It's a little bit fun, the outcome is known, and you have a pretty good idea of what you need to do but with scope for learning and finally, most importantly, it doesn't matter.&lt;/p&gt;

&lt;p&gt;The last bit is important. There is no real pressure save whatever you bring to it.&lt;/p&gt;

&lt;p&gt;I also wrote &lt;em&gt;a shit load of Ruby on Rails&lt;/em&gt; with video processing and everything but thats beside the point! :D&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>A Digital Ronin - My year freelancing</title>
   <link href="http://lab.section9.co.uk/2011/08/21/Freelance.html"/>
   <updated>2011-08-21T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/08/21/Freelance</id>
   <content type="html">&lt;p&gt;&lt;em&gt;the names of the people and organisations have been anonymised to protect the guilty&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I've had an interesting ride over the last few months. Since October last year, I left a well paid job at University of the South to pursue my love of computer graphics. Two things made me jump; the fact that the work I was doing quickly became dull and pointless and I'd been offered a job by Mr Jenkins.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I never meant to go freelance&lt;/em&gt;. I'd looked into working at other companies, leaving academia being something of a big move. Many of my colleagues and former students had a lot of experience in the industry whereas I had not. It felt like a chance that would never come again, so I never paid much attention to the realities. I just jumped, although I was slightly pushed by my own morals; realising I didn't care about the work I was doing at the time.&lt;/p&gt;

&lt;p&gt;Working with Mr Jenkins was a real eye-opener. Here is a man who is committed to his work more than anyone else I've ever met. His game is way above mine and I was constantly worried that I wasn't actually helping or being as productive as I felt I needed to be. I made schoolboy errors and found it hard to keep up with Mr Jenkins's endless professionalism and drive.&lt;/p&gt;

&lt;p&gt;Most of the time I worked out of Mr Jenkins's studio, until a second job came around from some old friends at University of the North. Initially, I was skeptical but I took the job for both negative and positive reasons; I needed the money and the job would genuinely help people who were in physical pain. It's not often you get a contract like that. It meant I needed a place to work and happily, &lt;a href=&quot;http://london.hackspace.org.uk&quot;&gt;London Hackspace&lt;/a&gt; filled that need.&lt;/p&gt;

&lt;p&gt;The problem here was the feeling of isolation that grew and grew each day. Working with Mr Jenkins, I felt that I was being challenged; I learnt a lot about the scene, about programming practices, about commitment and getting things done, but there was always that safety net there - A little voice that said 'Mr Jenkins will catch you if you fall'. Working remotely for University of North put me in a position where I felt quite alone. Working in a programming team of one with no-one to bounce ideas off or ask for help can be a tricky situation. This was compounded by the fact that living in London is a costly affair and I was earning much less than I had been.&lt;/p&gt;

&lt;p&gt;Networking for me has always been a problem. I don't have the business swagger or an air of confidence that other, more successful freelancers do. I suspect I'm also a little more moral and while thats great in some circumstances, it can be a problem if you want to make money. There were certain times where I'd ducked out of meeting people because I felt I wasn't at that stage of my career or that the social aspect was too daunting. For example, I'm not a huge fan of meeting people I've never met before in bar situations which, sadly, when you are around Shoreditch, is where many deals and professional friendships are forged.&lt;/p&gt;

&lt;p&gt;A second wave of bad luck hit when I needed to return to the North to work on a property I own up there. This was quite a burden, both in time and money. Over the next few months, the networking side of things began to dry up entirely and I became ever more isolated from the people in my field. I decided it was time to reconnect with people I'd not seen for a while. Miss Friendly introduced me to Mr Cats up in Manchester and a wonderful collaboration has since blossomed. It wasn't easy and required many motorcycling trips to and from my remote village but I made it happen. It felt good to be making in-roads back in the North.&lt;/p&gt;

&lt;p&gt;The North will never be quite like the South. In London, you can't throw a brick without hitting a hipster who works for a local social media company or creative agency (&lt;em&gt;throwing bricks at hipsters is encouraged!&lt;/em&gt;). In Manchester, this mass is building but it's not yet critical. Yes, there is a Hackspace but it's nothing like London Hackspace. Yes, you can work as a software engineer but it won't be for a trendy startup or a small, agile company. They do exist but there is a certain verve, a passion, an energy that you get swept up in when you are here in London.&lt;/p&gt;

&lt;p&gt;The internet can bridge the gaps in geography quite well. A client, Mr Britney, came to me and offered me a small job. He was working for The Bad Company who are quite well known and rather prestigious. Again, I needed the money and it seemed like a great job that was challenging but within my reach. However, the signs were there at the beginning that this would not work out.&lt;/p&gt;

&lt;p&gt;I'd met Mr Britney in London whilst training with another company in London. I didn't dislike Mr Britney but something gave me the fear. The job involved a technology I wasn't familiar with. The Bad Company wanted a set of shaders to create shadows, depth of field and screen-space ambient occlusion effects. Two of these I had already written and they simply needed porting. The first caused issues however. I never managed to get the shadows to be pretty or soft enough or react in the right way. In the end I realised I couldn't deliver. I told Mr Britney this and handed over all the work I had done. I never asked for payment and even suggested a few other people who might be able to help.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;He was not pleased&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;This was so depressing. I'd worked really hard but due to the circumstances I was in, I couldn't deliver. Deep down I knew it was something I should have been able to finish but two things stood in the way: lack of communication and the fact that I just didn't get on with  Mr Britney. He was, in my opinion, not a technical man despite his impressive portfolio. He didn't inspire confidence. As Mitch Altman has said many many times: 'Only work with people you love'. Makes perfect sense to me now. I'd gotten wound up in the details and had not spoken to the people who actually counted.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;always speak to the people who are going to use your stuff directly&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Knowing what to charge for your services is quite tricky. I decided to take my last salary, break that up into a price per hour and use that as a basis. The problem here is that it's quite difficult to know in advance how long a job will take. In the creative world, things don't really have timetables. Pricing yourself is a fine art and, as I have now realised, it's not really about the money. It's about appearances.&lt;/p&gt;

&lt;p&gt;If you price yourself low, you end up working hard for little pay. This is demoralising; your work suffers and your problems multiply. It requires a certain level of confidence, verging on being cocky. You need to believe you can deliver even if you can't and you need to know the market you are in. No-one wants to hire someone who considers themselves cheap.&lt;/p&gt;

&lt;p&gt;After spending my summer working on the house, finishing a few projects and hunting for cool jobs, I have returned to London in order to pursue the graphics dream. This time, I've taken a part-time technical job on the side to keep things going. My first tax return has been filed and things are looking up. I have two exhibitions of my own under my belt, one permanent exhibit, the beginnings of a javascript framework for WebGL and quite a few more contacts.&lt;/p&gt;

&lt;p&gt;Speaking with Dr Doom, one of my clients from Manchester, I realised that what I was doing was hard. It's not easy to make that jump and it's not easy to work long hours, on your own for little cash. Given the financial crisis at the moment, I realise that I've done well and that things are not as bad as they seem when you take the bigger picture into account. Most people I know who get into this game usually do it in pairs or more; Mr Jenkins is clearly, an exception. Companies like &lt;a href=&quot;http://www.kimchiandchips.com/&quot;&gt;Kimchi and Chips&lt;/a&gt;, &lt;a href=&quot;field.io&quot;&gt;Field.io&lt;/a&gt;, my friends at &lt;a href=&quot;http://shuttlethread.com/&quot;&gt;Shuttlethread&lt;/a&gt; and the &lt;a href=&quot;http://ubiquitous.co.uk/&quot;&gt;Ubiquitous Manufacturing Company&lt;/a&gt; are all pairs or more and that would be my first piece of advice for anyone who is thinking of getting into this game. Find someone you love and who you can work with.&lt;/p&gt;

&lt;p&gt;It's also important to remember you need to take time out. Keeping your creative juices flowing is important: it's your one true asset. There is no limit or imposed scarcity on creative and original ideas, by their very definition. You need to stay on top of developments and keep learning all the time. This usually means going for a walk, climbing a mountain or blasting down the beach road on a motorbike (thats my personal favorite!). For these into their Karma, you get out what you put in. If you are generating new ideas and creating new things, you are bound to do well. It doesn't have to be revolutionary, it just has to be you.&lt;/p&gt;

&lt;p&gt;It's worth remembering this if you are the kind of person who gets jealous when other people succeed in your field and you are struggling. &lt;a href=&quot;http://www.merlinmann.com/&quot;&gt;Merlin Man&lt;/a&gt; spoke about this in his excellent show &lt;a href=&quot;http://5by5.tv/b2w&quot;&gt;Back to Work&lt;/a&gt;. If someone has more twitter followers than you do, or has more experience than you, or more money than you, often that has no real effect on your situation other than what you create out of your own anxieties. Ok sure, if you are competing for the same client, maybe this doesn't hold true but for the most case, it does. Seeing this for what it is helped me stay productive. If you find yourself in this situation, chances are you are not doing work that reflects your own nature.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Do I regret my decision? Absolutely not.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In fact it's one of the first major decisions I don't regret. I ran into something unknown but I knew I just had to make something and this decision would put me in the place to do that. It caused a lot of pain, a lot of tears and in one odd case, a motorcycle crash, but when all's said and done, it was a very interesting 9 months.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;It's not over yet though. It's only just beginning!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It was never about the freelance for me. It was just a way of getting into the graphics space. It's important to keep looking forward. Though I have not yet succeeded in joining a prestigious outfit like &lt;a href=&quot;http://berglondon.com&quot;&gt;Berg&lt;/a&gt; or &lt;a href=&quot;http://bloom.io&quot;&gt;Bloom&lt;/a&gt; I have not given up. I am lucky to have been offered a part-time technical post which provides enough money to survive in London and enough time to continue with the interesting stuff. I'd recommend this approach to people operating on their own like &lt;a href=&quot;http://www.digininja.org/&quot;&gt;Digininja&lt;/a&gt;, my friend Charles at &lt;a href=&quot;http://twitter.com/#!/ElectricLab&quot;&gt;Electric Lab&lt;/a&gt; and my pal &lt;a href=&quot;http://www.imakethin.gs&quot;&gt;Tom who makes things&lt;/a&gt;. Having another commitment is not such a bad thing so long as it's related. It keeps you balanced and gives you a release from the pressure which is no bad thing.&lt;/p&gt;

&lt;p&gt;In a few key points, here is what I would suggest to students, people wanting to freelance or setup their own creative businesses or just get more out of their coding practice.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Just do it! Don't concern yourself with cash or prestige or other peripheral matters too much. If you have an idea, start it off as a hobby but make it grow. Publish your work on twitter, facebook etc. Just add a little polish and you are half-way there.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Look into Tax and legal issues but don't get bogged down by it. It's not that hard initially. When it get's complicated, you are likely to be earning enough to employ someone else to do it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Team up with people you love.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Remember your friends and family. They will support you when no-one else will&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Try and cultivate self-control: 'This is work time. This is play time'&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Think of a price, then triple it. Think of a time frame, then double it! ;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Talk about what you do. Keep it interesting and relevant but get your name out there.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Meet new and interesting people! Don't call it networking. Call it 'simply being an interesting and sociable chap'&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Only work for people you like (Thanks &lt;a href=&quot;http://en.wikipedia.org/wiki/Mitch_Altman&quot;&gt;Mitch&lt;/a&gt; )&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Have integrity. You will screw-up and you will upset people. But if you 'fess up, you'll be better off for it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understand that setbacks will occur and that they occur to everyone. You just never hear about them because people prefer to move on. You should move on when they happen to you.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Have fun!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Denied</title>
   <link href="http://lab.section9.co.uk/2011/08/14/Denied.html"/>
   <updated>2011-08-14T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/08/14/Denied</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://saito.section9.co.uk&quot;&gt;&lt;img src=&quot;http://farm7.static.flickr.com/6076/6038601918_ab736c4a6f_m.jpg&quot; alt=&quot;Denied&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've been looking at WebGL and I've been quite excited. The chance to merge design, the web and my favorite graphics library is not something I'd pass up. It's not all roses though because WebGL doesn't have uniform support across browsers. That said, it seems to be gaining ground.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://saito.section9.co.uk&quot;&gt;Denied&lt;/a&gt; is an idea I'd had a while back, ever since I chatted to &lt;a href=&quot;http://www.jonty.co.uk&quot;&gt;Jonty Wareing&lt;/a&gt; about Geolocating IP addresses. There is a nice library called &lt;a href=&quot;http://www.maxmind.com/app/geolitecity&quot;&gt;Geolitecity&lt;/a&gt; that I looked into. Jonty gave me a bash script that I modified a little to convert my &lt;em&gt;hosts.deny&lt;/em&gt; report into something a little more interesting. Turns out most of the evil people after my server are in Beijing. Who'd have thought it?&lt;/p&gt;

&lt;p&gt;WebGL is based on OpenGLES2 which deviates from what I've been taught in the past. There are now two flavours or styles of OpenGL; old skool and new skool. Using matrix transforms, drawing vertices for triangles and pushing/popping matrices is all old-hat now. It's all about vertex buffers and passing transforms and lights straight into the shader. With WebGL, there is the added change of loading resources asynchronously over the web. Javascript itself has some interesting abilities that are difficult to replicate in C++; closures, dynamic types and modifiying objects on the fly. These things are very interesting but how can they be used with OpenGL? OpenGL was classically, very strict in its manner; there was one way of doing things. With OpenGLES2 I feel it has become even more strict with offloading things to shaders. How can the interesting, dynamic nature of javascript be applied to this seasoned graphics library?&lt;/p&gt;

&lt;p&gt;I'm still not sure yet. I decided to get stuck right in and created &lt;a href=&quot;https://github.com/OniDaito/Saito.js&quot;&gt;saito.js&lt;/a&gt;. This little library does some of the heavy lifting such as loading textures, cubemaps, shaders (using jquery ajax calls) and creating basic shapes. So far I'm reasonably pleased thought there is a lot more I need to play with yet.&lt;/p&gt;

&lt;p&gt;Denied is a good example of my style; it's a mashup of many technologies. Firstly, the system runs on &lt;a href=&quot;http://wiki.nginx.org/&quot;&gt;nginx&lt;/a&gt; with uwsgi on top. This provides python support which reads the data produced by Jonty's script and returns a nice stack of JSON for Jquery to read. On the client side, we have saito.js, a bunch of shaders, jquery, &lt;a href=&quot;http://sylvester.jcoglan.com/&quot;&gt;sylvester&lt;/a&gt; and some nice HTML5 formatting and support. Every 30 seconds a request is made to nginx for more data, recreating the curves.&lt;/p&gt;

&lt;p&gt;The lighting is per-pixel with materials and light settings. The background is a quad with an alpha blend applied to give the burst effect. I wanted to try volumetric lighting but I'll leave that for another time. to create the etched surface of the globe, the standard technique of bump mapping was applied, though the tanget creation was a bit tricky. The maps of the planet are from &lt;a href=&quot;http://visibleearth.nasa.gov/&quot;&gt;NASA&lt;/a&gt; though I couldn't find a bump map with a high enough resolution. I disabled zooming in this instance because it affected the lighting too much and I wanted it to be consistent. The curves have a different shader that alters their alpha value with a sine function. Add some blending to that and you get a pleasing effect.&lt;/p&gt;

&lt;p&gt;Overall, I'm really happy with the look. It was pure experimentation and just messing around with colours and values and ideas with the shaders. This works in firefox 5, Chrome standard and Chrome Canary. Im not sure about other browsers yet. Each browser has different support. Firefox seems to run fast but doesn't antialias things correctly. Standard Chrome has antialiasing but tends to eat up CPU too much, whereas Canary seems to have all the positives and none of the negatives. Hopefully we'll see some standardisation soon.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Box2D and Puppets</title>
   <link href="http://lab.section9.co.uk/2011/08/04/Box2D-and-Puppets.html"/>
   <updated>2011-08-04T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/08/04/Box2D-and-Puppets</id>
   <content type="html">&lt;iframe src=&quot;http://player.vimeo.com/video/27285196?portrait=0&quot; width=&quot;420&quot; height=&quot;280&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;


&lt;p&gt;I've been looking at various physics libraries of late. I'd played a little with Bullet physics which was quite cool. I had trouble integrating it with the existing model I had for objects in my world. That said, it put me in a good position for working with &lt;a href=&quot;http://www.box2d.org/&quot;&gt;Box2D&lt;/a&gt; which is a great little library. My friend &lt;a href=&quot;http://imakethin.gs&quot;&gt;Tom&lt;/a&gt; used it in his famous iPod commerical spoof and I thought I'd give it a try for a small project I currently have going up North. The idea is to try and convert people into characters from a painting. The problem is that skeleton tracking with the kinect is not perfect and indeed, there are a lot of factor that can compound the issue.&lt;/p&gt;

&lt;p&gt;I figured that perhaps the characters should be more like puppets after chatting with the clients. It seemed like a good idea. It turned out to be quite tricky as you have various problems arising going from 3D to 2D. Drawing order and z-buffering are the immediate issues but also collision detection becomes a problem. Obviously with the side-on views, you don't want arms to collide with the front of the body. Fortunately, Box2D has a variety of options to sort that out. More importantly, the documentation is very good, so overall, I highly recommend Box2D. No wonder the Angry Birds guys ripped them off!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Skin</title>
   <link href="http://lab.section9.co.uk/2011/07/28/Skin.html"/>
   <updated>2011-07-28T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/07/28/Skin</id>
   <content type="html">&lt;p&gt;I'd like to talk about skin, specifically in two different contexts. Firstly, skin detection followed by realistic skin rendering. I've had to work with both over the last couple of weeks and it's been an interesting challenge.&lt;/p&gt;

&lt;object id=&quot;player&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; name=&quot;player&quot; width=&quot;420&quot; height=&quot;280&quot;&gt; 
    &lt;param name=&quot;movie&quot; value=&quot;http://facetube.section9.co.uk/player.swf&quot;&gt; 
    &lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot;&gt; 
    &lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt; 
    &lt;param name=&quot;flashvars&quot; value=&quot;file=http://facetube.section9.co.uk/SkinTone.flv&amp;amp;image=http://facetube.section9.co.uk/SkinTone.jpg&quot;&gt; 
    &lt;embed type=&quot;application/x-shockwave-flash&quot; id=&quot;player2&quot; name=&quot;player2&quot; src=&quot;http://facetube.section9.co.uk/player.swf&quot; width=420&quot; height=&quot;280&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; flashvars=&quot;file=http://facetube.section9.co.uk/SkinTone.flv&amp;amp;image=http://facetube.section9.co.uk/SkinTone.jpg&quot;&gt; 
    &lt;/object&gt;


&lt;p&gt;In this video, I'm playing with the Adaptive Skin Detector bundled with OpenCV2. OpenCV is great and is used in an awful lot of projects. I was approached by a friend to see if we could do something with skin detection and facebook. I looked into skin detection and found out that it's quite a hard and somewhat unsolved problem. All of the methods, seemingly, revolve around representing colour in different ways. HSV (Hue, saturation and Value) gives a useful representation that can capture the colours most frequently found in skin by simply specifying 3 binary values; if its less than this then its skin, else it isn't.&lt;/p&gt;

&lt;p&gt;The problem with that, as you can see in the video, is that other things that are skin coloured (like my office wall) show up as false positives. Not very handy. Since the adaptive filter wasn't working too well, I decided to have a go myself using the HSV cutoff method using the Python bindings for OpenCV. These come with the source version of OpenCV and once built, can be symlinked into your normal python install. With these setup, I decided to try the technique again.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm7.static.flickr.com/6137/5985564558_c4c3edeb4e.jpg&quot; alt=&quot;Skin Detect&quot; /&gt;&lt;/p&gt;

&lt;p&gt;As you can see, the results are ok but odd lighting and other such things tend to confuse matters. Still, for about 15 lines of Python, it's not so bad.&lt;/p&gt;

&lt;p&gt;Skin has recently reared it's head again with another project I've been asked to work on. It involves rendering lots and lots of hands, or rather, the same hand with different parameters to increase the realism. The idea is to hit the uncanny valley to investigate brain workings. Its all for science which is great as theres nothing I like more than tweaking things, and believe me, theres a lot to tweak here.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm7.static.flickr.com/6145/5985593084_f40f20553c_z.jpg&quot; alt=&quot;Skin in Max&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So, we bought a model from &lt;a href=&quot;http://www.turbosquid.com&quot;&gt;Turbosquid&lt;/a&gt; and decided to render it in 3DSMax as a baseline. It looks alright. I don't really know Max that well and Blender is where it's at for me, especially with the scripting side. Porting this model to Blender is a tricky task. An OBJ version was included so I set to. Adding armatures is reasonably easy to do, though very hard to get right. After reading up on subsurface scattering and using Nodes in Blender 2.5, I came up with this...&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm7.static.flickr.com/6143/5985031787_e89d7c497f_z.jpg&quot; alt=&quot;Skin in Blender&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I think this just about hits the uncanny valley. It's close but not quite right. I suspect there are a lot more variables to tweak and textures to add in order to match max but considering this is my first bash with Blender proper, it's gone alright.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>USB Eartunnel</title>
   <link href="http://lab.section9.co.uk/2011/07/20/USB-Eartunnel.html"/>
   <updated>2011-07-20T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/07/20/USB-Eartunnel</id>
   <content type="html">&lt;p&gt;&lt;img src=&quot;http://farm7.static.flickr.com/6140/5958313197_b9c65c8404_z.jpg&quot; alt=&quot;USB Eartunnel&quot; /&gt;&lt;/p&gt;

&lt;p&gt;As well as printing out a few cases for electronics and a scan of my face, I figured I could prototype my little idea. I guess thats the real strength of the whole makerbot and printing culture. I'd tried an RFID earring before but it was pretty crap and didn't work so well. I love the wires they use in Ghost in the Shell, like this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://img396.imageshack.us/img396/1391/major02yd8.jpg&quot; alt=&quot;Ghost in the Shell&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The problem is, in Ghost in the Shell, they tend to carry an attachment which looks like a collar that contains an extendible cable. Thats fine if you have an interface direct to the brain but for us mere dreamers, its probably not going to work.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm7.static.flickr.com/6141/5958871984_8b20103833_z.jpg&quot; alt=&quot;Eartunnel&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It does work though, which I'm quite pleased about. I designed this in Google Sketchup then exported to STL. The walls are 1.5mm thick but I reckon we could get it down to around 1mm with the printer at fablab.&lt;/p&gt;

&lt;p&gt;Perhaps an RFID ring is a better idea? I'd really like to take the iCuffLink idea of Lady Ada and make that work with WiFi. Can you imagine it? A wifi pendant that glows in the presence of strong wifi! I'll get to it! :D&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Vanity in Plastic</title>
   <link href="http://lab.section9.co.uk/2011/07/15/Vanity-in-Plastic.html"/>
   <updated>2011-07-15T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/07/15/Vanity-in-Plastic</id>
   <content type="html">&lt;p&gt;&lt;img src=&quot;http://farm7.static.flickr.com/6129/5940573147_8d8b8644e5_z.jpg&quot; alt=&quot;Vanity in Plastic&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I'm really into design and graphic design is something I've toyed with on and off over the years. However, making something great requires a sort of feel and behaviour as well as a pleaseing aesthetic. I love the fact that, now, if you have an idea you can see it made, refine and make again and again. Drop it, start something else, do whatever. We have the freedom for that sort of thing now. It's great.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://london.hackspace.org.uk&quot;&gt;Londonhackspace&lt;/a&gt; has had a makerbot for the last year or so. When I first turned up to a shed in Islington, Russ was pouring over it's innards, swearing here and there. Since that time, it has worked on and off. To be fair, its been abused a bit but I never really printed reliably.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.fablabmanchester.org&quot;&gt;Fablab Manchester&lt;/a&gt; has a much more professional setup with their Dimension beast of a printer. It takes an hour to warm the bugger up and it's as big as fridge-freezer, with a bed that is around 30cm square. It has the advantage of a dual nozzle setup, so it can print support material for these trickier spots. At a cost of 35p per cm3 for non-business customers, it's not such a pricey option. I've tended to use it for creating cases for electronics and what not. So far, I've been quite impressed. It prints cream coloured ABS plasticwhich seems fairly strong, down to about 1mm resolution.&lt;/p&gt;

&lt;p&gt;To create this bust of me (which cost about 2 pounds) I used the rather nifty &lt;a href=&quot;http://wiki.ultimaker.com/Kinect_2_STL&quot;&gt;Kinect to STL&lt;/a&gt;. This is a nicely packaged version of a processing app (I believe) and runs on OSX. It's fairly trivial to get a depth map out of a kinect or asus xtion now that things are moving along these days (certainly easier than structured light scanning!). This produces an STL with lots of faces. I figured that since I was printing this quite small, I'd reduce the count, so I fired up &lt;a href=&quot;http://meshlab.sourceforge.net/&quot;&gt;Meshlab&lt;/a&gt; which is a fantastic program for working with any kind of 3D data. Reducing the detail helped speed things up when I imported the file into &lt;a href=&quot;http://www.blender.org&quot;&gt;Blender&lt;/a&gt;. I'd noticed my right arm was sticking out a bit and that could potentially snap off or not print right so I scaled it down. Exported and away we go.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm7.static.flickr.com/6128/5941131100_1183b45daf_z.jpg&quot; alt=&quot;Vanity in Plastic&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The above photo is interesting in itself. It was taken with my Nikon D100 with a 50mm lens. To get so close I used a reversing ring and mounted the lens backwards! Works a treat so long as you have lots and lots of light!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Animation11 - Only</title>
   <link href="http://lab.section9.co.uk/2011/07/03/Animation11.html"/>
   <updated>2011-07-03T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/07/03/Animation11</id>
   <content type="html">&lt;object width=&quot;640&quot; height=&quot;360&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=25925349&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00adef&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=25925349&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00adef&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;640&quot; height=&quot;360&quot;&gt;&lt;/embed&gt;&lt;/object&gt;


&lt;p&gt;&lt;a href=&quot;http://www.cs.manchester.ac.uk/animation11/&quot;&gt;Animation11&lt;/a&gt; is a competition for schools across the country to help foster programming and creative skills in children. Entrants are treated to a day where they have their animations presented on a big screen, with glittering prizes handed out, talks from leading industry peoples and a whole host of activities, one of which was mine.&lt;/p&gt;

&lt;p&gt;The greatest thing for me in this was to see children enjoying the installation by remixing it themselves. We had a few kids cartwheeling behind the screen. Some of them stood behind each other to make wierd monster shapes. Others filmed their friends on their phones whilst they practiced their funky dance moves.&lt;/p&gt;

&lt;p&gt;In short, we hit the target. It made me happy.&lt;/p&gt;

&lt;p&gt;In contrast to DIGIT, Animation11 was another level up. Its a pleasure to work with intelligent, helpful staff who are really into what they do. The venue was better, with control over the lights and scaffolding to a certain degree. Manchester University provided a lot of the equipment which was great.&lt;/p&gt;

&lt;p&gt;I learnt many lessons here and I think it might help people if I break it down. Firstly, Only isn't complete, and may never be. I wanted to have reflections on the people in the pins, as real metal reflects. I had two PS3 eyetoys, which I'd only tested for 5 minutes. When I plugged them in, they lasted for 10 minutes before Macam's drivers gave up. I had many of the staff at the event looking for Mac friendly webcam. When we finally got one, we set it up mid festival and it didnt work. Why? Because the room was too dark!&lt;/p&gt;

&lt;p&gt;The projectors were specially ordered for this event because we needed short throws. There was a lot of back and forward between the client and I but I had to be sure they were the right ones. We went with &lt;a href=&quot;http://projectorpoint.co.uk/projectors/BenQ_MX613ST.html&quot;&gt;Two Benq Short-throw projectors&lt;/a&gt; which fit the screen and the dimensions of the room well. I must admit, I was quite impressed with these projectors but I think next time, I'll use one machine running Windows as oppose to OSX, with HDMI cables instead. The resolution on one side of the screen was not so good and could be improved.&lt;/p&gt;

&lt;p&gt;The program was written in &lt;a href=&quot;http://www.libcinder.org&quot;&gt;libcinder&lt;/a&gt; which I'm a big fan of these days. The main code revolves around the OpenNI middleware which pulls people out of the depth map taken from the Kinect. Blender was used to create the pins and Screen space ambient occlusion was used to give a sense of depth to the pins. Boost TCP sockets were used to send the pin values from the rear Mac to the front Mac, with a smoothing equation to give a more natural movement to the pins. Refraction was done in shader space with GLSL. Im still gutted about not having the reflection in there though! &gt;&amp;lt; I had specially modified my code to include a zoom, controlled by TUIO over my iPhone so people could see their reflections when I zoomed in. Ah well, i'll end artistic perfectionist rant!&lt;/p&gt;

&lt;p&gt;I cant get over the words from the man, &lt;a href=&quot;http://www.flight404.com/blog/?p=498&quot;&gt;Robert Hodgin over at flight 404&lt;/a&gt;. His summary is bang on and it makes me feel that I'm not alone in the things I've been going through of late. Only most definitely fits right into the frame he presents.&lt;/p&gt;

&lt;p&gt;For instance, Only is a labour of love for me. I've taken baby steps with it for over a year now. The original version helped to get me a job with MSA Visuals and when I look at it, I have to laugh because it's nowhere near as polished as it is now. But the original version has so much in it that was exploratory and creative. For instance, I had a cheap black screen, a few python prototypes, some cheap infrared cameras and what not. It was a great way to learn and I never gave up on it. Small steps.&lt;/p&gt;

&lt;object width=&quot;640&quot; height=&quot;400&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=9115304&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00adef&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=9115304&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00adef&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;640&quot; height=&quot;400&quot;&gt;&lt;/embed&gt;&lt;/object&gt;


&lt;p&gt;Sometimes, I used to get down because it wasn't really &lt;em&gt;my&lt;/em&gt; thing. I mean, the original idea came from Trent Reznor, the idea for making it double sided came from &lt;a href=&quot;http://jonty.co.uk/&quot;&gt;Jonty Wareing&lt;/a&gt; and the screen was built by Andrew Robinson from Manchester University. The thing is though, many people were involved in bringing together this project and I think that perhaps, the best projects really are collaborations. Im in there somewhere though, perhaps as the driver. But when I get down to it, there are so many people to thank. The staff at the uni, Toby Howard who directed the day, the guys who made Cinder, etc. I think that we never really do stuff on our own these days. Maybe thats a good thing afterall.&lt;/p&gt;

&lt;p&gt;In the end, Robert is totally correct. I'm still a little mad here and there that it didn't quite get to where I wanted it to be. I have ideas like mounting the kinect inside the screen or using different lights to capture the reflections or porting to windows to get instancing support and faster framerates but in the end, it worked and the people who played with it loved it. So I guess I'm happy to move on now and invent more things. Suppose I better had really as I need to eat! :D&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Nginx from Apache</title>
   <link href="http://lab.section9.co.uk/2011/06/26/nginx.html"/>
   <updated>2011-06-26T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/06/26/nginx</id>
   <content type="html">&lt;p&gt;I'd heard about Nginx a couple of times duing my time at UCL. My co-worker had set it up as the front-end proxy to deal with all the static requests and have Apache do the heavy lifting. Now, when it comes to building things, its a good idea to stick with what you know and actually ship, so long as things aren't broken.&lt;/p&gt;

&lt;p&gt;My apache setup was broken!&lt;/p&gt;

&lt;p&gt;On occasion, it would just stop working, eating all the memory and being a pain in the arse. So instead, I thought I'd look into &lt;a href=&quot;http://wiki.nginx.org/Main&quot;&gt;Nginx&lt;/a&gt; as a replacement. People I respect have said its good and I wanted to keep up to date.&lt;/p&gt;

&lt;p&gt;So, I run two django instances, an SSL setup infront of mediawiki and this static blog, so a good selection of things to setup there. Virtual hosts, some way of running Python, PostGreSQL and basic security. Quite a lot to throw in, in a single afternoon.&lt;/p&gt;

&lt;p&gt;However, it is wasn't for a change to my DNS I'd have most of it done by now! Unbelievable! I'm quite impressed. With the Django setup's, I released I needed something called &lt;em&gt;fastcgi&lt;/em&gt; . Essentially, fastcgi allows a websever to grab info from another running process quickly through a socket. Django supports this out of the box so long as you have &lt;em&gt;python-flup&lt;/em&gt; installed. So I ran &lt;em&gt;easy_install&lt;/em&gt; and followed the instructions that I found [on the django page] (https://docs.djangoproject.com/en/dev/howto/deployment/fastcgi/?from=olddocs). It took me a while to find this out and I'd gone down other routes such as &lt;em&gt;fastcgiwrap&lt;/em&gt; and similar which I discounted in the end. It means you need to run the &lt;em&gt;manage.py&lt;/em&gt; script with a few flags and have a socket that is accessible by your Nginx user. Also, you need to run the &lt;em&gt;manage.py&lt;/em&gt; as a Nginx user which helps. The setup for a Django page with Nginx can be found &lt;a href=&quot;http://wiki.nginx.org/DjangoFastCGI&quot;&gt;here&lt;/a&gt; but I needed to send a few extra variables before it would work fully. I found this out from &lt;a href=&quot;http://stackoverflow.com/questions/2104723/django-nginx-url-problem&quot;&gt;Stack Overflow&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I needed to do this twice. Fortunately the virtual hosts setup is trivial and the &lt;a href=&quot;http://wiki.nginx.org/Configuration&quot;&gt;Nginx Configuration Wiki&lt;/a&gt; will let you know how to do it. No problems there then.&lt;/p&gt;

&lt;p&gt;SSL is quite easy two with just a couple of lines needed to do the full setup, since I had some certificates and keys from my apache setup anyway. I didn't get around to changing mediawiki because I wanted to change the DNS to make a more sensible URL for that site. It doesn't look like it'll be too hard though.&lt;/p&gt;

&lt;p&gt;So far, Im quite impressed with how easy it's been. I havent changed any files around and all is well. Top job Nginx!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Panopticon</title>
   <link href="http://lab.section9.co.uk/2011/06/22/panopticon.html"/>
   <updated>2011-06-22T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/06/22/panopticon</id>
   <content type="html">&lt;p&gt;It occurred to me, over the last few days, weeks and months, that I am being observed by many cameras. Since I'm a bit of a poser, I figured I'd make a short video of the many wavelengths and dimensions I am captured in over the course of the working day at my desk.&lt;/p&gt;

&lt;object width=&quot;640&quot; height=&quot;390&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/K5BI8A1d5xE?version=3&amp;amp;hl=en_US&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/K5BI8A1d5xE?version=3&amp;amp;hl=en_US&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;640&quot; height=&quot;390&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;


&lt;p&gt;Its just a bit of fun but interesting nevertheless. There are also a couple mussing because the complete infrared camera feed can also be captured with the newer kinect and primesense/asus drivers. Must look into that.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Only Installation at the Lowry</title>
   <link href="http://lab.section9.co.uk/2011/06/15/only.html"/>
   <updated>2011-06-15T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/06/15/only</id>
   <content type="html">&lt;object width=&quot;480&quot; height=&quot;320&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=25107597&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00adef&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=25107597&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00adef&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;480&quot; height=&quot;320&quot;&gt;&lt;/embed&gt;&lt;/object&gt;


&lt;p&gt;After seeing the video for 'Only' by NIN, I decided I really wanted to make that work in real-time. The very first version used an infrared camera and OpenCV within OpenFrameworks and was quite a laugh really. I learnt a lot while building it. When the Kinect came out, I figured a rewrite was needed and since I wanted to learn more hardcore C++, I decided to go with Cinder.&lt;/p&gt;

&lt;p&gt;On the Tech side of things,  I went through a lot of different ideas, with shadows, an early version of SSAO and even a 360 Panorama shot, taken with my trusty D100. In the end, I found that the best result was to use either a texture or a webcam feed sent into some GLSL refraction, coupled with a version of SSAO that uses Poisson Discs. Its the only implementation I've found that runs well enough.&lt;/p&gt;

&lt;p&gt;Initially, I thought that using one mac, with the front and back screens stretched over two heads would work but sadly not. The framerate took a hit and doing fullscreen over two heads seemed difficult. In the end, I decided to send the raw data over a network link from the back screen, to the front. There was a small amount of latency but that actually added to the effect rather nicely.&lt;/p&gt;

&lt;p&gt;Two Mac Pros were hired to run it (overkill really) but the FPS wasnt as great as I'd like. I'd thought about instancing and similar but couldnt make it work with Apple's goddamn crappy OpenGL drivers. This will be running again in 3 weeks time and its likely it'll be on a couple of Windows machines instead (thanks Cinder Windows peeps!).&lt;/p&gt;

&lt;p&gt;The projector screen is quite special. It was made by one of the team, Andrew Robinson, who built a frame with 3 skins that stop the light from going straight through. The projectors were mounted quite high up so its possible to get very close to the screen. I'd incorporated Memo's Quadwarp algorithm into the program to keystone in software if needed but it turns out we didn't need to bother.&lt;/p&gt;

&lt;p&gt;Plenty learnt as its my first piece really (at least, the first that I made on my own, software wise) but I had a lot of fun. Cheers Cinder guys and girls!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>iPhone Macro Lens Hack</title>
   <link href="http://lab.section9.co.uk/2011/06/08/iPhone-Macro-Lens.html"/>
   <updated>2011-06-08T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/06/08/iPhone-Macro-Lens</id>
   <content type="html">&lt;p&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3121/5811272101_e7a3b4ceec.jpg&quot; title=&quot;iPhone Macro Lens&quot; alt=&quot;iPhone Macro Lens&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This is probably the most hacky hack I've ever really done because I had no idea I wanted to make this and all the bits were scrounged (well the case was 99p from eBay but nevermind). My old UCL outfit decided to throw out their photocopier and let me have at it for parts. I found this lens and kept it. One day I put it over my camera and bam! The iPhone Macro Lens was born. You can see the results above. Quite impressive I think. On the left is the normal photo. On the right is the macro shot.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://farm6.static.flickr.com/5076/5811272167_3c9442a0b4.jpg&quot; title=&quot;iPhone Macro Lens&quot; alt=&quot;iPhone Macro Lens&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It doesnt look that neat though! I just used a gluegun and some tape to mount the lens over the hole in the case. Works alright. I suppose if I was being a total blog whore hipster I could have used Sugru or something. The only fault with it is that you do get a small amount of lens vignette which you need to edit out with either the zoom function or in post. Nevertheless, I'm quite pleased!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Wireless Headtracking and FabLab</title>
   <link href="http://lab.section9.co.uk/2011/06/03/Wireless-Headtracking-and-FabLab.html"/>
   <updated>2011-06-03T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/06/03/Wireless-Headtracking-and-FabLab</id>
   <content type="html">&lt;p&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2130/5794083824_6cc8abfb7d.jpg&quot; title=&quot;XBee Gyro Unit in Custom Case&quot; alt=&quot;XBee Gyro unit in Custom Case&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Two posts combined! I've been busy trying to figure out a good way of doing headtracking on the cheap. Vuzix have not been too helpful when it comes to their VR920 headset. I've managed to get some working results with the Windows drivers but there is an issue when it comes to OSX and Linux. It was decided we should build our own Gyro unit. Not knowing anything about such things, I went straight in.&lt;/p&gt;

&lt;p&gt;I ended up buying a set of different gyros and accelerometers including &lt;a href=&quot;http://www.sparkfun.com/products/9431&quot;&gt;Sparkfun 6DOF Razor&lt;/a&gt; and the &lt;a href=&quot;http://www.sparkfun.com/products/9184&quot;&gt;Sparkfun Atomic 6DOF&lt;/a&gt;. Both have been pretty easy to setup within Cinder on OSX but each has different challanges. I'll be putting it all into a Cinder Block over the next few days. The Atomic takes care of the XBee communication but requires that you write some code to decode it's frames. I had some issues with that as each value comes back as two bytes: the most significant bits and the least. There were some annoying padding bytes that gave me trouble under C++ but after that, getting some nice values out seemed fine. The razor requires that you implement the XBee standard somehow. I wrote some code in C++, based on the Java libraries from Processing. Getting reasonable values out of the Razor was not too hard.&lt;/p&gt;

&lt;p&gt;The problem I had was my belief that Gyros measure absolute position. They don't. This may seem obvious to most but its the force applied to them in order to keep them steady that is measured, and they also drift. This means combining accelerometer data and gyro data together is needed and really important to get right. I have investigated Kalman filters and a few other methods to get everythong straight but its still a work in progress.&lt;/p&gt;

&lt;p&gt;To keep everything in one place, I decided to build a custom case at &lt;a href=&quot;http://www.fablabmanchester.org&quot;&gt;Manchester FabLab&lt;/a&gt;which is a great little place indeed! They are much more strict that London Hackspace but their kit is just a little bit neater and newer. It depends what you want from a workshop really? Both are good though Fablab restricts you to just Friday's and saturdays which sucks a little. Nevertheless, using Google Sketchup with the SVG Export plugin and Inkscape, you can produce a PDF that can be sent to a Laser cutter. Throw in some 3mm acrylic and bam! One case that holds the Atomic and a LiPoly Battery.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>My First Big Thing - 'Performance and Teamwork' for Memo Akten</title>
   <link href="http://lab.section9.co.uk/2011/05/24/My-First-Big-Thing-Deutsche-Bank.html"/>
   <updated>2011-05-24T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/05/24/My-First-Big-Thing-Deutsche-Bank</id>
   <content type="html">&lt;p&gt;It's arrived! Finally, out of NDA we have the &lt;a href=&quot;http://www.msavisuals.com/deutsche_bank_hong_kong&quot;&gt;Hong Kong Deutsche Bank Installation&lt;/a&gt;. This was led by the rather talented &lt;a href=&quot;http://www.field.io&quot;&gt;Field.io&lt;/a&gt; who decided to pass around some of the work to local creative, programming types such as &lt;a href=&quot;http://www.msavisuals.com&quot;&gt;MSAVisuals&lt;/a&gt;. At the time, I'd left my job at &lt;a href=&quot;http://www.casa.ucl.ac.uk&quot;&gt;CASA, UCL&lt;/a&gt; to come and work for Memo because I loved his work and it was high time I got my ass in gear and tried to do the work I love to do: computer graphics art. It was a no brainer at the time but it still scared me a lot to make the jump.&lt;/p&gt;

&lt;p&gt;Memo had already begun work on 'A Passion for the Planet' and asked me if I could work on the effects. Using MSAPhysics we came up with a particle system which I played with in order to add some dynamics to the scenes. So we had snow for the mountains, rain in the forest and, my personal favourite, sunspots for the Tea fields (giving the idea of the sun breaking through the cloud).&lt;/p&gt;

&lt;object width=&quot;400&quot; height=&quot;300&quot;&gt; &lt;param name=&quot;flashvars&quot; value=&quot;offsite=true&amp;lang=en-us&amp;page_show_url=%2Fphotos%2Ffliegerhorst%2Fsets%2F72157626756999726%2Fshow%2F&amp;page_show_back_url=%2Fphotos%2Ffliegerhorst%2Fsets%2F72157626756999726%2F&amp;set_id=72157626756999726&amp;jump_to=&quot;&gt;&lt;/param&gt; &lt;param name=&quot;movie&quot; value=&quot;http://www.flickr.com/apps/slideshow/show.swf?v=71649&quot;&gt;&lt;/param&gt; &lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;embed type=&quot;application/x-shockwave-flash&quot; src=&quot;http://www.flickr.com/apps/slideshow/show.swf?v=71649&quot; allowFullScreen=&quot;true&quot; flashvars=&quot;offsite=true&amp;lang=en-us&amp;page_show_url=%2Fphotos%2Ffliegerhorst%2Fsets%2F72157626756999726%2Fshow%2F&amp;page_show_back_url=%2Fphotos%2Ffliegerhorst%2Fsets%2F72157626756999726%2F&amp;set_id=72157626756999726&amp;jump_to=&quot; width=&quot;400&quot; height=&quot;300&quot;&gt;&lt;/embed&gt;&lt;/object&gt;


&lt;p&gt;A particle system requires a lot of thought when it comes to timing and precision. This went double because the system was to be synchronised across several machines in order to run on the large screen. A master clock was provided as part of the Field.kit base class we were asked to use. In addition, we were running with smaller images to begin with but we would need to scale everything up when the viewport was scaled. How big should a snowflake be on a small screen and a large screen? The same size? Smaller? Larger? Essentially, all the caluculations were made with respect to the variables coming through from the base class that Field had provided.&lt;/p&gt;

&lt;p&gt;The majority of the work for me came in with the &quot;Performance and Teamwork&quot; piece which involved the reading of Motion capture data from an FBX file. I'd never worked with FBX Files before (though I often do now) and was suprised at how powerful they were. I was given a brief from the design team who had provided both still images and short film clips (rendered in 3D with something akin to maya or max) and told to get cracking!&lt;/p&gt;

&lt;p&gt;An early mockup was quite fast in arriving (at least for me) but much of the time was spent on refinements and other such issues. Initially, the scene was rendered in 2D with dots but it was decided to use spheres eventually. Keeping the speed high was an issue at the outset. We played around with depth testing and decided that the painters algorithm was more suitable in this instance. Remembering to keep everything synchronised with the master clock was also something to constantly keep in mind.&lt;/p&gt;

&lt;object width=&quot;400&quot; height=&quot;300&quot;&gt; &lt;param name=&quot;flashvars&quot; value=&quot;offsite=true&amp;lang=en-us&amp;page_show_url=%2Fphotos%2Ffliegerhorst%2Fsets%2F72157626757080626%2Fshow%2F&amp;page_show_back_url=%2Fphotos%2Ffliegerhorst%2Fsets%2F72157626757080626%2F&amp;set_id=72157626757080626&amp;jump_to=&quot;&gt;&lt;/param&gt; &lt;param name=&quot;movie&quot; value=&quot;http://www.flickr.com/apps/slideshow/show.swf?v=71649&quot;&gt;&lt;/param&gt; &lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;embed type=&quot;application/x-shockwave-flash&quot; src=&quot;http://www.flickr.com/apps/slideshow/show.swf?v=71649&quot; allowFullScreen=&quot;true&quot; flashvars=&quot;offsite=true&amp;lang=en-us&amp;page_show_url=%2Fphotos%2Ffliegerhorst%2Fsets%2F72157626757080626%2Fshow%2F&amp;page_show_back_url=%2Fphotos%2Ffliegerhorst%2Fsets%2F72157626757080626%2F&amp;set_id=72157626757080626&amp;jump_to=&quot; width=&quot;400&quot; height=&quot;300&quot;&gt;&lt;/embed&gt;&lt;/object&gt;


&lt;p&gt;Memo is a true artist and came up with many suggestions and help along the way. Little things here and there were picked up and I quickly learnt that 90% of the time is spent on 10% of the code which makes up for 99% of the overall experience. The reflections changed to sprites (hence the painters algorithm) with a custom texture and the whole particle system was revamped in order to allow for more interesting movement.&lt;/p&gt;

&lt;p&gt;The particle system itself is quite interesting. The FBX models create a set of 'magnets' or spring end-points if you will and these can be turned on or off depending on the circumstances. This simple physics system was enhanced by some perlin noise and a little magic tuning to create something that looked a little more alive.&lt;/p&gt;

&lt;p&gt;The figures in the scene are quite dynamic; some move far and others not at all. We had to add constraints to keep the figures within the camera's viewing area. How was the camera's viewing area defined? With a particle system! Yes, the camera is attached to a set of springs which give it a more fluid motion around the figures.&lt;/p&gt;

&lt;p&gt;Add a little fog for depth perception and some subtle shader tweaks here and there and the result was quite pleasing.&lt;/p&gt;

&lt;p&gt;Of course, nothing ever goes completely to plan. Its the right level of improv that makes a performance they say. Performance and Teamwork caused a few issues when it was run across the linked machines. For a while, we couldn't figure it out. Eventually, thanks to help from Dean MacNamee, we figured out that logging to a console was causing issues as the stream was not correctly defined. Quite often, Memo and I will log things to stderr and stdout and that seemed to be causing memory issues with Fields setup. Not only that, we changed OS twice, swapping between Windows and OSX. Thankfully, &lt;a href=&quot;http://www.libcinder.org&quot;&gt;Cinder&lt;/a&gt; is great at making this almost a non-issue.&lt;/p&gt;

&lt;p&gt;On a personal level, it was humbling. I'm so glad to see this live and it felt like proof that I can do these things I've dreamed about doing. Many thoughts I had were dispelled though; it was a lot of hard work and the bar was much higher than on some projects I've worked on. I wouldn't have managed this on my own at the time if I'd not been teamed up with Memo. Workig with someone who knows how to program really well is great for learning but you really need to let your ego go and not get upset when the person you are freelancing for points out a few schoolboy errors you make. This is common in programming teams but it feels worse when you are freelancing because you are out there, on your own, trying to impress and do good work. On this project, there were down times for me but I suspect that is the case for anything worth doing. The final result, I feel, shows the amount of effort that went into this was truly epic, from all the people involved.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Libraries must die</title>
   <link href="http://lab.section9.co.uk/2011/05/18/Libraries-must-die.html"/>
   <updated>2011-05-18T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/05/18/Libraries-must-die</id>
   <content type="html">&lt;p&gt;There, I said it. Controversial? You bet! And this whole library issue has stirred even my normally inert political and social biases. The library issue in the UK has caught the attention of the public and the media and I think it is indicitive of a lot more than just government short sighted-ness and public stupidity.&lt;/p&gt;

&lt;p&gt;Libraries must die in order to change. What do they offer in a society of iPad users and latte drinkers? Such people now tend to read and work in coffee shops. That way, you can have a brew and talk to someone without some draconian woman in paisely shushing at you. Why would I bother? Its easier and more fun to crack open the macbook in Manchester's Northern Quarter and fire up Google Reader. Also, I'm willing to bet that half of the so-called outraged protestors probably never set foot in a library anyway.&lt;/p&gt;

&lt;p&gt;Sounds like I'm against libraries? What I'm against is something deeper. The closure of libraries represents change for the worse. I can remember as a young kid, being introduced to the book &quot;Good Omens&quot; which, as anyone who has read that book as a teenager will understand, is quite a magical moment. This got me thinking. What happended to that young boy who loved to peruse the shelves looking for nothing in particular?&lt;/p&gt;

&lt;p&gt;The internet happened.&lt;/p&gt;

&lt;p&gt;I read all my books on my iPhone. Before that, I used a treo (both colour and green screen versions). If I want a novel, I can have it in 5 seconds. I can get what I want, when I want it and I dont need to remember to take it back. Google is there for everything else. What need is there of dead tree format? Now I know you'll all be misty eyed about your hardbacks and your collectors edition of Dune (I have a stash of 'special' books held in a steel box) but its the words that are important. Chances are, its the technology you dont like, not that it makes your eyes hurt.&lt;/p&gt;

&lt;p&gt;I'm a technology guy. It's my job and its what I love so I'm biased. The only reason a Computer Science student needed to go into the library at university was to check out the hot girls. Thats the only reason! In CS, things move so fast, the most up to date information is still online. Sure, there are 'classic texts' and I've bought a few but try getting that out of a library and you will be sorely disappointed.&lt;/p&gt;

&lt;p&gt;We live in a world where scarcity in any form of media is becoming less and less of a problem, but, and this is a serious acknowledgement, only for these with means to access the net. I am one of these fortunates and it's easy to forget that in the age where more and more people have access to mobile phones yet are on the dole. Clearly the government believes this too and they don't care about these less fortunate.&lt;/p&gt;

&lt;p&gt;We are living in a changing world and libraries need to change too. Oh sure, the British Library, Leeds Central Library, Manchester's John Rylands and all these need to stay and they will of course. But its the smaller libraries like the one I used to go into as a kid that will suffer. I'd never go in there now. I wouldn't be seen dead using any of their PCs or borrowing a DVD. What is the point? I've got so much to read already (and I read a lot!) I don't need to step into a library ever again. So what do they offer?&lt;/p&gt;

&lt;p&gt;They offer space and curation.&lt;/p&gt;

&lt;p&gt;Think about that for a second. Lets take space. People go into libraries to sit and read. I've still got my pass for the readers rooms at the British Library and as places to sit go, it's rather good. Its quiet and you can get work done for an hour or two. Sure, you need to secure your wifi but it's great that there are chairs and interwebs for free. Space can also be used for exhibitions and such which bring communities a little closer together. Perhaps libraries should get rid of all these dusty rotting leather things?&lt;/p&gt;

&lt;p&gt;Curation is the second important point. We've all heard the stories of 'too much information' and ADHD and attention spans and similar. Curation allows us to reduce our information overload and, related to space, allows us to step away from the masses of information and reduce it down to a more managable level. If you go into a library on a whim, chances are you'll find something interesting that you didn't expect. In addition, you have a human face you can talk to which is generally, much nicer than Bing (not hard I know!).&lt;/p&gt;

&lt;p&gt;So, is closing libraries really the issue? No. It's about how libraries need to change to meet the new era we are entering into. This argument opens up a whole can of worms though, digital rights management being the main one but if we leave such concerns aside for the moment, what would a new library look like? I, for one, would love to walk up to a magic glass wall, talk over some research with a librarian and as she waves her hands, some finely curated and relevant items appear along the glass that I can wander down and peer at. Sounds like an existing library doesn't it? Maybe the internet needs to come to the library in order to save it?&lt;/p&gt;

&lt;p&gt;I think the sad thing is, we probably won't see it.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Jekyll vs Wordpress</title>
   <link href="http://lab.section9.co.uk/2011/05/15/jekyll-vs-wordpress.html"/>
   <updated>2011-05-15T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/05/15/jekyll-vs-wordpress</id>
   <content type="html">&lt;p&gt;So I've been playing around with blogging software for a while now and to be honest, I'm really not taken with any of them. Wordpress uses PHP which I cant stand and only supports MySQL and has a significant bloat factor. Nevertheless I had it installed because I liked the way I could upload media easily. Turns out that this is the only benefit. Once I had wordpress installed, it pretty much killed my web server. Not happy.&lt;/p&gt;

&lt;p&gt;Russ from the London Hackspace and my friend Adam Challis both recommended &lt;a href=&quot;https://github.com/mojombo/jekyll&quot;&gt;Jekyll&lt;/a&gt; which is great! Its simple, written in Ruby and has import functions for Wordpress and other such sites. Basically, it creates the pages statically, offline. You then upload the changes to your webserver. Its designed to be run through git so you effectively sync your blog with the one in your repos. Great stuff. For blogs like mine that aren't updated every five seconds, having a database is overkill when what you really need is just a good way to organise things.&lt;/p&gt;

&lt;p&gt;I run my own mediawiki and I'm getting into the Ruby and Python and GIT things a lot these last few months and the use of Markdown and GIT to help run a blog is a great idea because it keeps things nice, consistent and simple.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Canned Kinect</title>
   <link href="http://lab.section9.co.uk/2011/05/08/canned-kinect.html"/>
   <updated>2011-05-08T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/05/08/canned-kinect</id>
   <content type="html">&lt;object width=&quot;640&quot; height=&quot;360&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=23422641&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00adef&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=23422641&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00adef&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;640&quot; height=&quot;360&quot;&gt;&lt;/embed&gt;&lt;/object&gt;


&lt;p&gt;So I've been working out how to do live Mocap with real models for a while now and I think I've finally got it. It still has trouble tracking based on factors I'm not sure about (the lab coat certainly doesnt help). The way that the arms snap back to their default positions when the tracking is lost is not a very good feature either but nevertheless, its definitely live mocap, thanks to the excellent work by the primesense team. Awesome!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Saito.js - Playing with WebGL</title>
   <link href="http://lab.section9.co.uk/2011/05/04/saito-js-playing-with-webgl.html"/>
   <updated>2011-05-04T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/05/04/saito-js-playing-with-webgl</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://www.section9.co.uk/blog/wp-content/uploads/2011/05/saito.jpg&quot;&gt;&lt;img class=&quot;alignnone size-full wp-image-126&quot; title=&quot;saito&quot; src=&quot;http://www.section9.co.uk/blog/wp-content/uploads/2011/05/saito.jpg&quot; alt=&quot;&quot; width=&quot;607&quot; height=&quot;530&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So I've been playing a lot with WebGL and, as everything is Ghost in the Shell related here, I've decided to call my script Saito.js . I've tidied it up a little and its &lt;a href=&quot;https://github.com/OniDaito/Saito.js&quot;&gt;now up on GIT&lt;/a&gt; though it isn't really ready for prime time yet.&lt;/p&gt;

&lt;p&gt;Javascript is an odd language but I'm definitely coming  around to it. Asynchronous requests, and dynamic binding with some closures thrown in as well? Theres a lot of power there but with OpenGL? OpenGL I'd have thought, doesn't lend itself well to anything but classic C++ code? Nevertheless, I could be wrong. When I learnt OpenGL back in the day, it was all about glBegin and glEnd but now, with display lists, VBOs and the VAOs (which I've yet to play with) and Shaders being the rage now, perhaps its time to change one's programming style.&lt;/p&gt;

&lt;p&gt;The above screenshot shows my 2D curve shape class. Im wanting to get some visualisations going so we need some nice curves! :) Watch this space, much more to come!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>OpenGL Bottlenecks</title>
   <link href="http://lab.section9.co.uk/2011/04/25/opengl-bottlenecks.html"/>
   <updated>2011-04-25T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/04/25/opengl-bottlenecks</id>
   <content type="html">&lt;p&gt;&lt;img class=&quot;alignnone&quot; title=&quot;OpenGL Profilier&quot; src=&quot;http://developer.apple.com/library/mac/documentation/graphicsimaging/conceptual/OpenGL-MacProgGuide/art/opengl_profiler_window.jpg&quot; alt=&quot;&quot; width=&quot;611&quot; height=&quot;440&quot; /&gt;&lt;/p&gt;

&lt;div&gt;I must admit, there is a certain amount of bottlenecks and profiling you need to do in order to get a responsive framerate. Im currently involved in my first installation and trying to get the framerate up to something respectable is proving quite difficult. At first, I thought it was all to do with the large textures I was mashing around as I use a lot of FBOs and similar. Turns out, thanks to a little profiling, that its actually all to do with the sheer number of triangles I'm flinging around.&lt;/div&gt;


&lt;div&gt;&lt;/div&gt;


&lt;div&gt;How did I find this out? Well, its always good to remember Valgrind, Instruments, GDB and all the old programs you used to use at Uni or College or wherever. Nowadays, these have grown into easy to use programs within an IDE. Instruments, for example, is really really good and I love using it. But what about OpenGL?&lt;/div&gt;


&lt;div&gt;&lt;/div&gt;


&lt;div&gt;Classically, OpenGL seems to be a bit of a black box when it comes to any form of debugging. However, there are two really handy programs available on the Mac (and indeed, on most PCs I'd say).&lt;/div&gt;


&lt;div&gt;&lt;/div&gt;


&lt;div&gt;&lt;a href=&quot;http://developer.apple.com/library/mac/#documentation/graphicsimaging/conceptual/OpenGL-MacProgGuide/opengl_performance/opengl_performance.html&quot;&gt;Apple has some good information on the OpenGL Profiler&lt;/a&gt;. This is pretty nifty and tells you a lot about...well, everytyhing really! It has all the details on your FBOs, the calls that take the most time. It really is excellent.&lt;/div&gt;


&lt;div&gt;&lt;/div&gt;


&lt;div&gt;In addition, there is also the &lt;a href=&quot;http://support.gremedy.com/default.asp?forum.1.41.3&quot;&gt;gDebugger&lt;/a&gt; which has a few similar features but critically, tells you the amount of vertices and triangles you are shifting. Apparently, my latest piece has at least 1800000 triangles! Eeeep!&lt;/div&gt;


&lt;div&gt;&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>>Quad Warp, Dual Head</title>
   <link href="http://lab.section9.co.uk/2011/04/23/quad-warp-dual-head.html"/>
   <updated>2011-04-23T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/04/23/quad-warp-dual-head</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/-XEBSmLA0nLI/TbL-KdnM_FI/AAAAAAAAAy0/CCBZWSEhGxM/s1600/quad.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;&quot; src=&quot;http://2.bp.blogspot.com/-XEBSmLA0nLI/TbL-KdnM_FI/AAAAAAAAAy0/CCBZWSEhGxM/s320/quad.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5598816742476151890&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'm wokring on many things at the moment and this is one of them. As 'Only' is going to be up at Digit this year at the Lowry im looking to get some ideas on how best to get two sides of the piece to work best. Previously, I've tried a TCP stream between two machines and that worked quite well. There were issues with the speed however and the receiving machine was definitely slower but the effect looked quite nice.&lt;br /&gt;&lt;br /&gt;The second idea is to use one, quite hefy machine and two heads. This is probably the nicest solution but doubles the amount of FBOs and space I need one one card. My little Macbook Pro has problems dealing with it for sure. Questions arise such as rendering the geometry twice or rendering both views at once onto a wide texture. In addition, what happens if we need to use projectors? If we have to keystone and warp each view seperately then we could have a problem. &lt;br /&gt;&lt;br /&gt;So, in the above picture we have the front view in red, on the left and the rear view, on the right in green. Both are 1024x768 textures, mapped to a 12 x 12 set of quads which are warped using Memo Aktens Projection warping shader. The effect works quite well so hopefully, thats the projectors covered!&lt;br /&gt;&lt;br /&gt;How best to improve framerates though? There are, at least, 4 1024x768 textures (rising to 6 with SSAO) and at least 4 different shaders working. So far 15fps is the best which is about half of minimum. More work to do it seems.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Never be out of iPhone powerz again!</title>
   <link href="http://lab.section9.co.uk/2011/04/16/never-be-out-of-iphone-powerz-again.html"/>
   <updated>2011-04-16T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/04/16/never-be-out-of-iphone-powerz-again</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/-odzySQ-xmy4/TaoGkyC1nLI/AAAAAAAAAys/GbqrXN41S2M/s1600/DSC_5961fancy.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;&quot; src=&quot;http://1.bp.blogspot.com/-odzySQ-xmy4/TaoGkyC1nLI/AAAAAAAAAys/GbqrXN41S2M/s320/DSC_5961fancy.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5596292715939994802&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Solar Minty boost is your friend! I've been hacking at this project for a while and never managed to get it finished, until now!&lt;br /&gt;&lt;br /&gt;Its a good lesson in...well...something I think. Im not sure what. I mean, I almost had it working, then bought the wrong fitting parts, never got a decent lipoly, burnt one board with a lipoly, then had no access to a laser cutter for ages and when I did, thanks to Fablab Manchester, it was somewhat different and weird from the one I was used to. Overall, a lot of energy was spent into something you can buy now for around thirty quid. I didnt learn a lot about electronics either. &lt;br /&gt;&lt;br /&gt;But that all said, I had fun putting it together and I'm glad it works (so far!). I would urge everyone to make one of these. The advantage is, if i get bored, I can use the bits in something else and indeed, its a modular system because I can, if I want, add more batteries easily, use a different panel or charge other devices. It will actually take a wall wart adaptor as well so there is scope for improving easily. &lt;br /&gt;&lt;br /&gt;We shall see how it keeps up with me as I break things very easily! :D&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>The Woes of Soft Shadows</title>
   <link href="http://lab.section9.co.uk/2011/04/13/the-woes-of-soft-shadows.html"/>
   <updated>2011-04-13T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/04/13/the-woes-of-soft-shadows</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;I've been playing with soft shadows for a client and it's been one hell of a rocky ride I must say. There isn't really a nice way of doing it that I'm happy with. I've gone through PCF, PCSS, VSM and SAVSM and none of them seem to work right. I must admit, we are on the verge of very hardcore OpenGL here. But the basics of shadowmapping are quite simple.&lt;br /&gt;&lt;br /&gt;So, Percentage Closer Filtering was the first I tried. It was a bit tricky until I realised its pretty much offset sampling and thats it. Bang. Take an average of a set amount of pixels. Job done. Problem is, this is quite slow when you are averaging over 64 texels. The effect isn't great and a bit wasteful as well. So, that means Percentage Closer Soft Shadows is an option. It sort of looks like this:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/-xG5__l4M08Y/TaV5PGF4HHI/AAAAAAAAAyk/-Jdch5Mp4xo/s1600/pcss.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 271px;&quot; src=&quot;http://4.bp.blogspot.com/-xG5__l4M08Y/TaV5PGF4HHI/AAAAAAAAAyk/-Jdch5Mp4xo/s320/pcss.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5595011412317969522&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Doesnt look that bad but its rather slow and the falloff isn't really big enough. The shadows need to fade away a lot quicker and when the filter gets past about 8x8 you can see lots of artefacts. Not good.&lt;br /&gt;&lt;br /&gt;So, PCSS and PCF have failed me. Thats really annoying. So, people say that VSM is better. Its certainly simpler in code though you do need to use a colour texture and not a depth buffer. Still, once you are happy with FBOs you can get to it. &lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://farm6.static.flickr.com/5067/5609017825_7937375e5b.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 500px; height: 459px;&quot; src=&quot;http://farm6.static.flickr.com/5067/5609017825_7937375e5b.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;They are smooth but look at the falloff... the shadows are stronger the further away. Clearly that's wrong. I've no idea why VSM does this because Shadows dont work that way in the real world. Im convinced it looks wrong. Boo and hiss!&lt;br /&gt;&lt;br /&gt;Nevetheless, it was close and it seems to be quite fast in comparison to PCF and the effects are smoother.&lt;br /&gt;&lt;br /&gt;Summed Area Tables apparently allow us to smooth out and fade the shadows. This is pretty much what we need. Summed Area Tables is an old technique from the 80s that, like most older algorithms, has a new lease of life because of shader technology. So, with that in mind, I managed to write a shader and Ping Pong FBO from scratch and it actually worked! Marvellous. A summed table basically adds up the sums of the texels from the top left to the bottom right (or similar). This means that you can get the sum of any rectangle within the table in constant time. So a 128 x 128 lookup for the average is the same cost as a 2 x 2 with Summed Area Tables. Thats great because we can alter the filter size at any point with our VSM shadows. Brilliant!&lt;br /&gt;&lt;br /&gt;There is a problem however. Summed Area Tables end up with big big numbers. You are, in effect summing, say 512 x 512 numbers so the last number is going to be very large. You then need to subtract another large number from this which means a loss of precision which results in artefacts like this:&lt;br /&gt;&lt;br /&gt; &lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://farm6.static.flickr.com/5146/5614133967_c57d44dfdc.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 500px; height: 474px;&quot; src=&quot;http://farm6.static.flickr.com/5146/5614133967_c57d44dfdc.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There is a certain amount of noise which is really sad because when that doesnt occur, we do get nice soft shadows on the cheap. Pretty cool!&lt;br /&gt;&lt;br /&gt;So, very close but no cigar yet!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Shapeways and Fabbing</title>
   <link href="http://lab.section9.co.uk/2011/04/04/shapeways-and-fabbing.html"/>
   <updated>2011-04-04T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2011/04/04/shapeways-and-fabbing</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/-s9frfUQ6M6k/TZolYvZeDbI/AAAAAAAAAyc/ALBjrGZykH8/s1600/DSC_5843fancy.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 214px; height: 320px;&quot; src=&quot;http://1.bp.blogspot.com/-s9frfUQ6M6k/TZolYvZeDbI/AAAAAAAAAyc/ALBjrGZykH8/s320/DSC_5843fancy.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5591822994304273842&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Making things with lasers and plastic and 3D printers is a much more serious affair for the geek now. I was never a huge fan of wood work or plastic moulding at school but I do love the fact that I can mess with things on a computer and then have them realised. There has been a lot of talk on 3D printing with things such as the makerbot and the RepRap and the Mendel. But I've wanted to try &lt;a href=&quot;http://www.shapeways.com/&quot;&gt;Shapeways&lt;/a&gt; for a while now and I figured it was time. &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.outer-beauty.co.uk&quot;&gt;My sister&lt;/a&gt; like animation and art amongst other things, and studied at the University of Salford. For her final piece, she decided to do a proper retro gaming, escape into reality short that I really enjoyed (in fact, my crappy voice acting makes an appearance). So, I figure, why not actually bring one of the characters to life.&lt;br /&gt;&lt;br /&gt;I had awful trouble with getting the model to work. Firstly, the original character has a lot of spindly bits. I went with one of the bulkier characters but even then, some of the areas needed to be increase to meet Shapeways' 3mm rule. They go into a lot of depth about this. I had to export from Max into Blender where made a few changes. I've never been happy with the bones in Max anyway. After that it went into meshlab and then netfabb! 4 Programs in total to get it right but I wanted it to be damn sure.&lt;br /&gt;&lt;br /&gt;Shapeways are expensive I feel but then they are shipping from the Scandaweiganland. I think, for something really special, it's worth it. Im hoping to get hold of some personal data like an eyeball or an xray I can convert. Would give me a good excuse to learn the marching cubes algorithm! &lt;br /&gt;&lt;br /&gt;&lt;object width=&quot;480&quot; height=&quot;390&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/Gsh4ZYjrcFg?fs=1&amp;amp;hl=en_US&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/Gsh4ZYjrcFg?fs=1&amp;amp;hl=en_US&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;480&quot; height=&quot;390&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Quartz Composer Programming</title>
   <link href="http://lab.section9.co.uk/2011/03/25/quartz-composer-programming.html"/>
   <updated>2011-03-25T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2011/03/25/quartz-composer-programming</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/-FoRqxMeqWLY/TYys6hW_pXI/AAAAAAAAAyU/mv9YXumOqxo/s1600/qc.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 255px;&quot; src=&quot;http://4.bp.blogspot.com/-FoRqxMeqWLY/TYys6hW_pXI/AAAAAAAAAyU/mv9YXumOqxo/s320/qc.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5588031359047148914&quot; /&gt;&lt;/a&gt;&lt;br /&gt;I've been asked by a client to work on a set of patches for Quartz Composer. I was quite chuffed really because it meant playing with Shadows and other suchs cool things. What I didnt know was that there quite a lot of problems with programming in QC. There is the Apple official way which is quite well documented and then there is the &lt;a href=&quot;http://kineme.net/release/QCPatchXcodeTemplate/10&quot;&gt;SkankySDK&lt;/a&gt; way which is sort of unofficial and a hack.&lt;br /&gt;&lt;br /&gt;The thing is, I should have realised it was a hack. Looking at the Kineme webpage though, and the fact that you have to pay for things made me feel that this was usable by any old dev. Not so. The &lt;a href=&quot;http://kineme.net/release/Kineme3D/12&quot;&gt;Kineme3D&lt;/a&gt; and other plugins allow a lot of extra functionality within QC such as model loading and all the rest. Now thats just what we need. If one could create a &lt;span style=&quot;font-weight:bold;&quot;&gt;Macro Patch&lt;/span&gt;, one could then add things with Depth of Field and Fog or whatever to your sub patches.&lt;br /&gt;&lt;br /&gt;Apple doesn't let you program Macro patches.&lt;br /&gt;&lt;br /&gt;Bummer! So that means we need to use the SkankySDK from the Kineme webpage after all. Sadly, there is no documentation and almost no comments in the headers! Unbelievable! Im still annoyed about that. Also, the examples included in the SDK are slightly misleading.&lt;br /&gt;&lt;br /&gt;So, there are 3 patch types in Quartzcomposer. One creates values, one passes values and the final one renders. These are called&lt;span style=&quot;font-weight:bold;&quot;&gt; Consumer patches&lt;/span&gt; and it is one of these I wanted to right. Turns out you need to make sure that this class (inheriting from QCPatch) returns the correct execution method and that it has no outputs! Sounds obvious that an end-of-the-line patch should have no outputs but you need to make sure, otherwise QC wont let you use it.&lt;br /&gt;&lt;br /&gt;Also, all output and input ports as they are known &lt;span style=&quot;font-weight:bold;&quot;&gt;must have their variable names start with either input or output&lt;/span&gt;. This is mentioned anywhere on the SkankySDK (maybe this is mentioned on Apple's site) but thats a massive failure in my opinion.&lt;br /&gt;&lt;br /&gt;Consumer plugins allow you to write OpenGL basically. So all your standard Shader and FBO commands can be written inside a consumer. But there are a couple of things you need to do first. Any file that makes reference to OpenGL needs to include:&lt;br /&gt;&lt;br /&gt; &lt;style type=&quot;text/css&quot;&gt; p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #d32d26} span.s1 {color: #794830} &lt;/style&gt;   &lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;s1&quot;&gt;#import &lt;/span&gt;&amp;lt;opengl/gl.h&amp;gt;&lt;/p&gt; &lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;s1&quot;&gt;#import &lt;/span&gt;&amp;lt;opengl/opengl.h&amp;gt;&lt;/p&gt; &lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;s1&quot;&gt;#import &lt;/span&gt;&amp;lt;opengl/cglmacro.h&amp;gt;&lt;/p&gt;&lt;br /&gt;Now, you might think that is obvious, but the the program will compile and appear to run even without these import lines. If you put them in, your patch will work. If you miss them out, you patch will execute its children but not work itself. How crazy?&lt;br /&gt;&lt;br /&gt;In addition, any OpenGL function needs this line:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;   &lt;style type=&quot;text/css&quot;&gt; p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo} span.s1 {color: #7141a3} span.s2 {color: #3e227c} &lt;/style&gt;   &lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;s1&quot;&gt;CGLContextObj&lt;/span&gt; cgl_ctx = [context &lt;span class=&quot;s2&quot;&gt;CGLContextObj&lt;/span&gt;];&lt;/p&gt;&lt;br /&gt;Why? I have no idea yet!&lt;br /&gt;&lt;br /&gt;So, is that it then? No, there is one last thing. You need to be careful with the execution of subpatches:&lt;br /&gt;&lt;br /&gt;&lt;style type=&quot;text/css&quot;&gt; p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #3e227c} span.s1 {color: #000000} span.s2 {color: #bc319c} &lt;/style&gt;   &lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;s1&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;executeSubpatches&lt;span class=&quot;s1&quot;&gt;:time &lt;/span&gt;arguments&lt;span class=&quot;s1&quot;&gt;:arguments];&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;This executes your subpatches for you which works fine but remember that you have no control on state. You should, as a best practice, push and pop all you need to and nothing else. So inside my FBO code  I don't include a clear statement because there is another patch that does that for me.&lt;/div&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Screen Space Ambient Occlusion, again!</title>
   <link href="http://lab.section9.co.uk/2011/03/18/screen-space-ambient-occlusion-again.html"/>
   <updated>2011-03-18T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2011/03/18/screen-space-ambient-occlusion-again</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;object width=&quot;480&quot; height=&quot;390&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/4u8lCQ_x-cU?fs=1&amp;amp;hl=en_US&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/4u8lCQ_x-cU?fs=1&amp;amp;hl=en_US&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;480&quot; height=&quot;390&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Its a lovely effect, but my research has lead me to two possible versions of this algorithm, based on &lt;a href=&quot;http://www.gamedev.net/topic/556187-the-best-ssao-ive-seen/&quot;&gt;this thread over at gamedev&lt;/a&gt;. I must say, there is quite a lot of good stuff over there and I've had fun reading up on it all. The thing is, its a tricky effect to get right and needs a lot of tweaking. Also, the FPS can take quite a big hit because you need at least 2 geometry passes and 1 SSAO pass to get it to work. With that running, you'll loose a few frames. In addition, you need an accurate depth buffer. I'd forgotten this and it took me ages to track it down. GL_RGBA32F_ARB is your friend.&lt;br /&gt;&lt;br /&gt;Watch this space, I shall be improving it! :D&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Advice on using the Kinect</title>
   <link href="http://lab.section9.co.uk/2011/03/16/advice-on-using-the-kinect.html"/>
   <updated>2011-03-16T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2011/03/16/advice-on-using-the-kinect</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;I've been around with this Kinect for a while now. Since Memo from &lt;a href=&quot;http://www.msavisuals.com&quot;&gt;msavisuals.com&lt;/a&gt; put me on to it I've been hooked. Tom Wyatt from the London Hackspace has also been chatting with me about it and we've been working on different aspects of the device. Tom has a flair for the kiddy dramatic cool stunts; his&lt;a href=&quot;http://www.flickr.com/photos/section9/5523709833/&quot;&gt; Kinect Tesla Coils&lt;/a&gt; went down at storm at Makerfaire. Thing is, I realise I haven't written up much about how best to use the device and how it works from a software engineering point of view. One of my friends recently asked me about this so I thought I'd better do a writeup.&lt;br /&gt;&lt;br /&gt;So, the Kinect was hacked by Marcan, who's work is quite amazing. His library is know as &lt;a href=&quot;https://github.com/OpenKinect/libfreenect&quot;&gt;libfreenect and is available on git&lt;/a&gt;. This is the starting point and there are libraries that allow you to get access to the device on all the 3 major platforms. The issue here is that libusb is involved which is affected by your choice of OS and thats where things could or could not go wrong.&lt;br /&gt;&lt;br /&gt;Under MacOS I was using the version that came with &lt;a href=&quot;mxcl/homebrew - GitHub&quot;&gt;homebrew&lt;/a&gt;, my installer of choice. The default version is too recent apparently, you need one that lives deep in subversion. Apparently there is one however within homebrew if you specify the correct flag. &lt;br /&gt;&lt;br /&gt;Of course, the nasty issues of 64bit vs 32bit arise and that is an issue in itself. Be careful which path you choose. I went 32bit in the end though there are 64 bit versions of the OpenNI libs which you may wish to use.&lt;br /&gt;&lt;br /&gt;All that said, you should be able to get one of the examples running such as Openframeworks with the &lt;a href=&quot;https://github.com/ofTheo/ofxKinect&quot;&gt;ofxKinect&lt;/a&gt; demo or Cinder with the&lt;a href=&quot;http://forum.libcinder.org/topic/new-kinect-support&quot;&gt; Kinect Cinder Block&lt;/a&gt;. Either way, you'll get something like the camera and the depth stream. For me, this was enough for the &lt;a href=&quot;http://www.vimeo.com/17163402&quot;&gt;NIN Only Demo&lt;/a&gt; and it worked really well. &lt;br /&gt;&lt;br /&gt;Of course, you want to play with all the Skeleton Tracking and sexy computer vision stuff though? This is where things get odd. We move away from libfreenect and into the realm of OpenNI, NITE and the hacked SensorKinect module. Basically, this is quite confusing initially. OpenNI is a framework for interesting user interfaces. That is all really. Nothing more. Then, a company called Primesense did a load of cool computer vision stuff with their own depth camera and came up with the NITE libraries. These libraries allowed the skelton and hand tracking stuff to work. They let slip that their camera was very similar to the Kinect. Once they'd released the source, the sensor module was hacked to allow the kinect to take place of their camera. Job done.&lt;br /&gt;&lt;br /&gt;Openframeworks has a good writeup on using the OpenNI sensor kinect stuff with their projects, but the best bet is to get the basic demos installed. I did this the hard way with rebuilding everything but you can check out &lt;a href=&quot;http://www.roxlu.com/blog/entry/121/ofxopenni-working-on-mac!-(pre-beta-release)/page/&quot;&gt;Roxlus work on ofxOpenNI&lt;/a&gt; and try that way. The &lt;a href=&quot;http://www.openni.org/&quot;&gt;main OpenNI page&lt;/a&gt; has the NITE libraries and the OpenNI libraries you need on their beta page. Being hardcore, &lt;a href=&quot;https://github.com/roxlu/ofxOpenNI/tree/experimental&quot;&gt;I went with the instructions over on GIT&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There are plenty of resources out there on this but getting familiar with GIT, Make and GCC are quite essential!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Depth of Field in Cinder</title>
   <link href="http://lab.section9.co.uk/2011/03/15/depth-of-field-in-cinder.html"/>
   <updated>2011-03-15T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2011/03/15/depth-of-field-in-cinder</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/-cfpyOGIR_CY/TX9SLWtJJOI/AAAAAAAAAyM/KIgyfEQIOo8/s1600/depthoffield.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 251px;&quot; src=&quot;http://4.bp.blogspot.com/-cfpyOGIR_CY/TX9SLWtJJOI/AAAAAAAAAyM/KIgyfEQIOo8/s320/depthoffield.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5584272417989666018&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Depth of Field is a lovely effect. I thought I'd have a look at how to do this in Cinder. Oddly enough, the &lt;a href=&quot;http://www.minecraftforum.net/viewtopic.php?f=25&amp;t=128043&amp;start=300&quot;&gt;Minecraft community have a gorgeous plugin that does this exactly&lt;/a&gt;. I have moified the shader to work with just the distance from the near plane. This means that the focus is at the near plane and then drops back. The effect is quite cool!&lt;br /&gt;&lt;br /&gt;Depth of  field is the effect that occurs with a thin lens when all the light rays fail to converge on the same point. A lens can only focus perfectly at one specific distance but the fall-off in sharpness or the increase in size of  the Circle of Confusion is gradual. It is this effect we want to try and recreate. To do that, we need the colour texture and the depth texture. Sampling the depth, deciding how far away it is from the focal plane and then blending with neighbouring pixels provides a good estimation of this effect.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Solar Charging for the iPhone</title>
   <link href="http://lab.section9.co.uk/2011/03/03/solar-charging-for-the-iphone.html"/>
   <updated>2011-03-03T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2011/03/03/solar-charging-for-the-iphone</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/-CS4KsIa-R-0/TXAOt0DANsI/AAAAAAAAAx0/Evi4Owg5zsU/s1600/DSC_0020.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 212px;&quot; src=&quot;http://2.bp.blogspot.com/-CS4KsIa-R-0/TXAOt0DANsI/AAAAAAAAAx0/Evi4Owg5zsU/s320/DSC_0020.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5579976118540187330&quot; /&gt;&lt;/a&gt;&lt;br /&gt;When you are out and about, camping on on the bike and what not, its a pain when your iPhone dies. There was the Minty Boost which was a great invention by Adafruit Industries (as I recall) and then someone decided to mod this and add a solar panel to it. I thought I'd have a go at this, using parts I'd sourced myself from various places. &lt;a href=&quot;http://www.instructables.com/id/How-to-make-a-solar-iPodiPhone-charger-aka-Might/&quot;&gt;This Guide over on Instructables&lt;/a&gt; covers the basics. This project was more about what not to do, and that can be quite useful.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/-XhgVs4HCbEo/TXAPObjgVJI/AAAAAAAAAx8/zU1Q57pLg1M/s1600/DSC_0022.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 212px;&quot; src=&quot;http://4.bp.blogspot.com/-XhgVs4HCbEo/TXAPObjgVJI/AAAAAAAAAx8/zU1Q57pLg1M/s320/DSC_0022.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5579976678901306514&quot; /&gt;&lt;/a&gt;&lt;br /&gt;As you can see, my Minty boost is extra steam punk! There is quite a large inductor on there which is quite overkill. The problem here is Lady Ada likes skinny-ass parts that don't seem to be standard or at least they aren't standard for Farnell. That is certainly an issue. There is a different set of packaging it seems, at least for the resistors and inductor. Magically it works. I found the USB connectors cheaper on eBay.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/-IUoBv98s0fQ/TXAQwB7U1dI/AAAAAAAAAyE/zM1qVLLYpkQ/s1600/DSC_0024.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 212px;&quot; src=&quot;http://3.bp.blogspot.com/-IUoBv98s0fQ/TXAQwB7U1dI/AAAAAAAAAyE/zM1qVLLYpkQ/s320/DSC_0024.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5579978355649074642&quot; /&gt;&lt;/a&gt;&lt;br /&gt;The Lithium Polymer battery was looted from my parent's misc drawer. You know, the one EVERYONE has in their kitchen. It appears to work but I'll certainly give it time before I'm totally sure. I had a stack of Lipolys that came out of a macbook battery. Linking these into the system actually burnt out my lipoly charger board! It was mad! Actual fire and burning! I don't know what was in these batteries because it attacked the previous owner as well! Madness!&lt;br /&gt;&lt;br /&gt;The Solar panel came from eBay and I can't remember what I actually bought! It had two small contacts on the back. Soldering a USB cable to it worked fine. It is plugged into the otherside of the sparkfun charger. All in all, a successful conclusion so far. I need to craft a case to hold it all, but thats for another time! :)&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Kinect Skeleton for Skinning</title>
   <link href="http://lab.section9.co.uk/2011/02/25/kinect-skeleton-for-skinning.html"/>
   <updated>2011-02-25T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2011/02/25/kinect-skeleton-for-skinning</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;object width=&quot;640&quot; height=&quot;360&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=20339138&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=20339138&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;640&quot; height=&quot;360&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;So I've been looking at the Kinect quite a bit in relation to skinning. The Primesense team have done a really good job when it comes to full on skeleton tracking and its quite easy to get the positions of the various limbs, but when you are performing skinning, you need a rotation matrix. As we are dealing with 3D we need 3 axes defined. This is impossible with the kinect as it can't measure 'twist'. &lt;br /&gt;&lt;br /&gt;Like most hackers, I didnt buy the Kinect with an XBox and had no interest in the games at all. I was told by a friend that actually, Microsoft fakes this in the games. The way the palm faces is dependent on where the arm is and is then set in the code. So if you raise your arm above your waist, the palm is set to a certain orientation that has no basis on where your hand actually is.&lt;br /&gt;&lt;br /&gt;The challenge is to work out if we can actually get this data somehow (from a glove or something) wirelessly and unobtrusively. I reckon Wiimotes are going to be the thing!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Motorcycle Computer</title>
   <link href="http://lab.section9.co.uk/2011/02/20/motorcycle-computer.html"/>
   <updated>2011-02-20T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2011/02/20/motorcycle-computer</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;So, I've always wanted to have a Tron Bike. What geek hasn't?! Well, not only that but lots of cool computer gadgets and similar all working together with an awesome looking bike and lots of cool riding gear. Well.... until I get loads of money this will have to do. I have an Old ER-5 and she's running quite well but I like to play around and learn what I can with this bike. I had an old ASUS eeePC that was beginning to go unused and dying so I figured, lets see if we can use this as the brains for a motorcycle computer.&lt;br /&gt; &lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/-hi43lv688Bk/TWGH95K9CaI/AAAAAAAAAxc/j2YQ3phPVAw/s1600/DSC_0013.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 212px; height: 320px;&quot; src=&quot;http://4.bp.blogspot.com/-hi43lv688Bk/TWGH95K9CaI/AAAAAAAAAxc/j2YQ3phPVAw/s320/DSC_0013.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5575887311049918882&quot; /&gt;&lt;/a&gt;&lt;br /&gt;This is what the main body looks like. I've stripped out the main board from the ASUS following a few guides that you can Google. Its quite easy really if you take the time. There are a couple of catches at the back of the keyboard you need to flip in order to lift it off properly. Once thats done, the rest is just screws.&lt;br /&gt;&lt;br /&gt;I decided that wedging it between some 5mm and 2mm perspex would be a good idea (actually, it may be 1.5mm - I found it in our bin). To do this, I cut a rough outline using a laser cutter and drilled four holes that would hold 4 M3 bolts. The problem is, these bolts are a little too large for the motherboard so I drilled these out a little more too! :P&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/-SpFE4P9dtEw/TWGJVpcDHjI/AAAAAAAAAxk/ojnUreFuv7Y/s1600/DSC_0017.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 212px;&quot; src=&quot;http://1.bp.blogspot.com/-SpFE4P9dtEw/TWGJVpcDHjI/AAAAAAAAAxk/ojnUreFuv7Y/s320/DSC_0017.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5575888818655141426&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Suprisingly, it worked. The screen is attached with an I-PEX cable whatever that is. Annoyingly, on the I-PEX site, I cant find the same looking adaptor so I have no idea about how to extend the screen to the tank bag. This is the next step I need to solve.&lt;br /&gt;&lt;br /&gt;At this point, mounting the PC in the bike was a problem. The rear tray of the ER-5 is slightly too narrow to hold the PC. However, there is one, AND ONLY ONE way when it fits really snuggly. I left the PC inside the bike for about a week, where it was transported in a trailer, left out in the rain (sadly) and ridden for a good few miles. I then took it out and it still works! So far so good!&lt;br /&gt;&lt;br /&gt;Now the next stage is the battery. I happened to have two batteries, one being a long life one. The battery normally sits between the two prongs on the board but that is no good for mounting on the bike. If i could somehow get the battery to sit underneath, all my problems would be solved. The solution? Take the battery apart. Since they are Li-poly I figured there might be some wires and electronics before the battery proper and therefore, some leeway in moving the socket around 90-180 degrees.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/-CIrANB4c2RM/TWGLDKdC5mI/AAAAAAAAAxs/GtQQ2mnR0H0/s1600/DSC_0016.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 212px;&quot; src=&quot;http://2.bp.blogspot.com/-CIrANB4c2RM/TWGLDKdC5mI/AAAAAAAAAxs/GtQQ2mnR0H0/s320/DSC_0016.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5575890700123432546&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ok so its not going to be the best fit but I reckon if I glue the battery to the underside of the asus sandwich, I reckon it should work.&lt;br /&gt;&lt;br /&gt;Of course, people will ask, why not run it off the battery? Where are the cameras? Why is there no wii-mote attached? The answer? Because I did this on a total crazy hacker whim and its worked great so far so im just gonna wing it and see where it gets me! :P But yes, all these things considered! Next step is the software and wii-mote g sensing methinks.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Kinect Madness</title>
   <link href="http://lab.section9.co.uk/2011/02/11/kinect-madness.html"/>
   <updated>2011-02-11T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2011/02/11/kinect-madness</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;object width=&quot;640&quot; height=&quot;360&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=19751821&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=19751821&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&amp;amp;autoplay=0&amp;amp;loop=0&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;640&quot; height=&quot;360&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;I must admit, this little box of joy has caused a massive stir in the communities I'm part of. For now, I cant really say what im really working on as its not quite complete but im sure you can guess from the video.&lt;br /&gt;&lt;br /&gt;Skinning was quite tough but I reckon I've got that sorted. The problem is mapping rotations from one skeleton to another. Currently, things are all wrapped up and backwards and a bit crazy but I'm getting there!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Cinder Skinning</title>
   <link href="http://lab.section9.co.uk/2011/02/04/cinder-skinning.html"/>
   <updated>2011-02-04T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2011/02/04/cinder-skinning</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;object width=&quot;480&quot; height=&quot;385&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/K994B9EeNC0?fs=1&amp;amp;hl=en_US&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/K994B9EeNC0?fs=1&amp;amp;hl=en_US&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;480&quot; height=&quot;385&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;I've been having quite a hard time getting this working, but its finally done! Skinning inside Cinder has been the goal for the last week or so. Its been damn tricky as the FBX format is a beast to work with. However, in the end, I have emerged victorious.&lt;br /&gt;&lt;br /&gt;FBX has support for bones and Cluster deformation. Using Blender, one can export to FBX and load everything up in Cinder. There are bugs though. For some reason, leaf bones don't properly show up as far as I can tell within the export though everything else seems to generally work.&lt;br /&gt;&lt;br /&gt;The idea is that the rotations need to cascade down the tree to all the subnodes. This is the tricky bit and with FBX, you need to keep a seperate structure that holds the matrices. You can then modify the bones which in turn, modifies the weighted mesh.&lt;br /&gt;&lt;br /&gt;This really should be deformed in a vertex shader which is the next step really. That and getting some texture support (which i tool out temporarily to make the code a little simpler). In the end, im pleased with the result. Code will end up on github. Might make a cinder block too!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Projection Mapping</title>
   <link href="http://lab.section9.co.uk/2011/01/26/projection-mapping.html"/>
   <updated>2011-01-26T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2011/01/26/projection-mapping</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;iframe title=&quot;YouTube video player&quot; class=&quot;youtube-player&quot; type=&quot;text/html&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;http://www.youtube.com/embed/uES0HfGAqCc&quot; frameborder=&quot;0&quot; allowFullScreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;I've been wanting to play a lot with VDMX and Projection mapping. Memo over at MSA Visuals has a rather good setup which I decided to steal: &lt;a href=&quot;http://memo.tv/projection_mapping_quad_warping_with_quartz_composer_vdmx&quot;&gt;http://memo.tv/projection_mapping_quad_warping_with_quartz_composer_vdmx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So generally, it appears that you need to mesh together quite a few things. Memo's Quartz Composer setup appears to have a few extra hooks that VDMX can get hold of. Im not sure what these are. Also, it took me aaaaaages to figure out how to get shaders to work in Quartz Composer as it's not very intuitive. Pull out the inspector on a GLSL patch and select the second tab. That gives you the vertex and pixel shaders. We can edit and play around with that there.&lt;br /&gt;&lt;br /&gt;VDMX is a bit of a bitch as well, but it has soooo many cool features. Loading up the quartz composer file, you can then inspect this with the media inspector. Select what you want to warp and away you go. The result? Chairman Jonty projected onto a box! Awesome!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Cookbot</title>
   <link href="http://lab.section9.co.uk/2011/01/23/cookbot.html"/>
   <updated>2011-01-23T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2011/01/23/cookbot</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TTx2cA6WeLI/AAAAAAAAAxI/K71wynEncz0/s1600/DSC_5434.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 226px;&quot; src=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TTx2cA6WeLI/AAAAAAAAAxI/K71wynEncz0/s320/DSC_5434.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5565453463176247474&quot; /&gt;&lt;/a&gt;&lt;br /&gt;No, don't misread that (although a colleague of mine is working on something more 18 rated). This small bot is the beginning of (hopefully) even tastier meats. Its a hacked slow cooker that can hold a temperature reliably for a long period of time. Its called Sous Vide cooking and I got quite interested in it after seeing &lt;a href=&quot;http://www.cookingforgeeks.com/blog/posts/video-of-my-talk-from-next-hope/&quot;&gt;The Cooking for Geeks Talk at the Next Hope&lt;/a&gt; Conference. It seemed quite interesting.&lt;br /&gt;&lt;br /&gt;This is probably the most hacking thing I've actually done. All the parts except for the Arduino are second-hand or scavenged. The slow cooker came from eBay,the case was given to me from another hackspace member and the major relay I took from a board that was being thrown out. Thats the main key of the circuit - a large relay capable of switching a mains voltage.&lt;br /&gt;&lt;br /&gt;To flip that relay we need to send almost 5 volts to it from the arduino. Now these pins are rated at 5 volts and the relay was actually rated at 12V. We got quite lucky we could switch it at all. However we added a transistor and a couple of resistors with a flyback diode and job was a goodun. &lt;br /&gt;&lt;br /&gt;To measure temperature, I used &lt;a href=&quot;http://www.earthshineelectronics.com/18-ds18b20-digital-temperature-probe.html&quot;&gt;this probe from Earthshine electronics&lt;/a&gt;. It works quite well and with a pull up resistor, it works quite well out of the box. There are some Arduino libraries for this which makes it a doddle.&lt;br /&gt;&lt;br /&gt;So, the results? Here is a trace so far&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TTx4HjBwmfI/AAAAAAAAAxQ/lAO_AW_lTRU/s1600/mychart.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;&quot; src=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TTx4HjBwmfI/AAAAAAAAAxQ/lAO_AW_lTRU/s320/mychart.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5565455310580128242&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It looks good and holds reasonably well but will it be good enough for Sous Vide? We shall have to see. I'll do the egg test tomorrow and we shall see :P&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Cinder Shadow Volumes</title>
   <link href="http://lab.section9.co.uk/2010/12/21/cinder-shadow-volumes.html"/>
   <updated>2010-12-21T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/12/21/cinder-shadow-volumes</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/TRDT5e0crCI/AAAAAAAAAw8/iYnYGi-neIE/s1600/shadow1.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 251px;&quot; src=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/TRDT5e0crCI/AAAAAAAAAw8/iYnYGi-neIE/s320/shadow1.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5553171325026872354&quot; /&gt;&lt;/a&gt;&lt;br /&gt;I was asked to come up with some shadows in Openframeworks on a tight timescale.... I kinda failed on that one, having gone down the wrong route of shadow maps (I'd previously used VSM for my first NIN project). Looking it over, it seems that shadow volumes, or some hybrid approach with both is probably best. I've spent far too long on this but so far, I've managed to get a reasonable approximation of depth pass shadow volumes going.&lt;br /&gt;&lt;br /&gt;I first wanted to use &lt;a href=&quot;http://http.developer.nvidia.com/GPUGems3/gpugems3_ch11.html&quot;&gt;this approach from GPU Gems 3&lt;/a&gt; whereby a geometry shader creates the shadow volume on the card and 'hopefully' speeds things up. This means you need to create a &lt;a href=&quot;http://www.cgal.org/Manual/latest/doc_html/cgal_manual/HalfedgeDS/Chapter_main.html&quot;&gt;Half-edge&lt;/a&gt; structure that knows about twin edges so you can pass adjacency information to the geometry shader using GL_TRIANGLES_ADJACENY_EXT.&lt;br /&gt;&lt;br /&gt;Theres just one problem&lt;br /&gt;&lt;br /&gt;OSX only has shader language 1.2 (at least on snow leopard). This means I can't implement the algorithm in GPU Gems. Bugger!&lt;br /&gt;&lt;br /&gt;I'd gone down this road stupidly really, but I'd spent a lot of time with &lt;a href=&quot;http://code.google.com/p/google-sparsehash/&quot;&gt;Google Sparse Hash&lt;/a&gt; in trying to get a fast lookup. I figure'd I'd stick with this half-edge structure (built from Cinder's Trimesh) and carry on using the default method of creating shadow volumes with the stencil buffer. This means no shaders sadly but nevermind. &lt;br /&gt;&lt;br /&gt;Again, another unforseen problem. Cinder on OSX doesn't create a stencil buffer by default! &lt;br /&gt;&lt;br /&gt;Yup, that kinda sucks really as they are quite handy though Im sure there were reasons for this. The changes are up on &lt;a href=&quot;https://github.com/cinder/Cinder/issues#issue/21&quot;&gt;the Github Cinder repository&lt;/a&gt; if you use OSX. Not sure about Windows though but potentially, there is an issue there too.&lt;br /&gt;&lt;br /&gt;The main problem I've had is with creating the silhouette itself. This can be quite tricky and since I'm using Cinder's TriMesh, I need to make the code as unobtrusive as possible. &lt;a href=&quot;http://prideout.net/blog/?p=54&quot;&gt;This page&lt;/a&gt; gives a great guide to doing this and the general approach is quite useful. One needs to find the edges facing away or towards the light, discount all the others then find edges with twin faces that arent counted. These form the edges which we then extrude away from the light. &lt;br /&gt;&lt;br /&gt;Overall I'm fairly pleased with the result, though it needs improvement. Depth fail + Caps and a slight softening of the edges in the GPU should work I think&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Kinect Camera Mount</title>
   <link href="http://lab.section9.co.uk/2010/12/11/kinect-camera-mount.html"/>
   <updated>2010-12-11T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/12/11/kinect-camera-mount</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/TQP1acvgj5I/AAAAAAAAAw0/VHOgPO1nc-0/s1600/IMG_0111.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 320px;&quot; src=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/TQP1acvgj5I/AAAAAAAAAw0/VHOgPO1nc-0/s320/IMG_0111.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5549549000591445906&quot; /&gt;&lt;/a&gt;&lt;br /&gt;I've been wating to get to grips with the Kinect. Because of it's range and other considerations, mounting on a tripod is useful. Using gaffer tape is cool, but laser cutting your own is much cooler! I've posted the files and instructions on thingiverse: &lt;a href=&quot;http://www.thingiverse.com/thing:5110&quot;&gt;http://www.thingiverse.com/thing:5110&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is the first version and it needs a little work but the basics are there.&lt;br /&gt;&lt;br /&gt;The files provided allow you to cut out two pieces on a laser cutter from either 6mm or 8mm acrylic. MDF probably won't be strong enough as these prongs are designed to clip into the bottom of the kinect's base.&lt;br /&gt;&lt;br /&gt;If you look at the bottom of the Kinect you'll see it has two holes for a clip. Matching the first piece is designed to slot into these holes. The second piece forms a cross shape for stability.&lt;br /&gt;&lt;br /&gt;Once you have cut these out, glue together and then attach a third, circular piece. This needs to be tapped with the correct thread for your camera mount, then glued to the first cross section. Getting the right tap could be tricky. The one I used was close but not totally correct. 8mm Perspex seems to work quite well. 6mm might be too thin for the circular base but is fine for the actual clip.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>More Lampooning</title>
   <link href="http://lab.section9.co.uk/2010/11/27/more-lampooning.html"/>
   <updated>2010-11-27T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/11/27/more-lampooning</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TPE0ptyb6JI/AAAAAAAAAws/7zdKIbKQ3KE/s1600/russ-hope.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 261px; height: 320px;&quot; src=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TPE0ptyb6JI/AAAAAAAAAws/7zdKIbKQ3KE/s320/russ-hope.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5544270507540211858&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We love him really. Our glorious co-founder of the London Hackspace. He's smart, intelligent, rich and driven, if a little Grumpy! :P&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Some more lazoring!</title>
   <link href="http://lab.section9.co.uk/2010/11/21/some-more-lazoring.html"/>
   <updated>2010-11-21T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/11/21/some-more-lazoring</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/TOjlxsQTUUI/AAAAAAAAAwk/BCLAx8GqNQk/s1600/DSC_5113.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 234px;&quot; src=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/TOjlxsQTUUI/AAAAAAAAAwk/BCLAx8GqNQk/s320/DSC_5113.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5541931983335280962&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Again, whilst I was waiting for my Kinect (which has now arrived), I decided to work on a few makerbot and lazor projects to further the graphics goodness. I've been playing with structured light for quite a while now and I found that the setup, with the projector and camera was the most critical and annoying part. Makerbot Industries came up with a frame to hold a pico projector and PS3 Eyetoy so I thought it might be nice to have a play with it. Of course, my Kinect has now arrived so this is pretty much pointless. Need to find another use for it I think. &lt;br /&gt;&lt;br /&gt;At least it smells of toast! :P&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>First Kinect Playing</title>
   <link href="http://lab.section9.co.uk/2010/11/21/first-kinect-playing.html"/>
   <updated>2010-11-21T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/11/21/first-kinect-playing</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/TOjloAHw_2I/AAAAAAAAAwc/_87WneRGAcI/s1600/radio.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 126px;&quot; src=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/TOjloAHw_2I/AAAAAAAAAwc/_87WneRGAcI/s320/radio.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5541931816869494626&quot; /&gt;&lt;/a&gt;&lt;br /&gt;So, last tuesday, Jonty brings &lt;a href=&quot;http://www.last.fm&quot;&gt;last.fm's&lt;/a&gt; kinect over the hackspace. Mine hadn't arrived so I figured I'd have a play. Really REALLY easy to mess with the Mac OSX drivers. I figured the first thing to do was to get the classic Radiohead video up and going. Works well but this is just the beginning! :D&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>More Makerbot action (whilst waiting for my Kinect)</title>
   <link href="http://lab.section9.co.uk/2010/11/15/more-makerbot-action-whilst-waiting-for-my-kinect.html"/>
   <updated>2010-11-15T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/11/15/more-makerbot-action-whilst-waiting-for-my-kinect</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TOB6vdGFAeI/AAAAAAAAAwE/20UGUHXw72k/s1600/IMG_0005.JPG&quot;&gt;&lt;img style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 150px; height: 200px;&quot; src=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TOB6vdGFAeI/AAAAAAAAAwE/20UGUHXw72k/s200/IMG_0005.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5539562497348272610&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TOB6crcYoqI/AAAAAAAAAv8/bTKMMGvlDJ0/s1600/IMG_0006.JPG&quot;&gt;&lt;img style=&quot;float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 150px;&quot; src=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TOB6crcYoqI/AAAAAAAAAv8/bTKMMGvlDJ0/s200/IMG_0006.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5539562174782415522&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br /&gt;Yes, I've jumped on the Kinect bandwagon. Already I have big plans but there have been many things I've needed to sort out these last few weeks so not had much time to do any cool S9 style vids. Instead, I have been fixing some of life's small problems, one of which is the state of my headphones. The winder was useless which meant cables all over pockets, wound around keys and much else, so I decided to employ the makerbot and here is the result.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Weighted Companion Cube</title>
   <link href="http://lab.section9.co.uk/2010/11/02/weighted-companion-cube.html"/>
   <updated>2010-11-02T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/11/02/weighted-companion-cube</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/TM_YBNY4mwI/AAAAAAAAAvs/O7ezHaK12es/s1600/cc1.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 248px;&quot; src=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/TM_YBNY4mwI/AAAAAAAAAvs/O7ezHaK12es/s320/cc1.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5534879982347131650&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Another work in progress as I play with the Makerbot at the &lt;a href=&quot;http://london.hackspace.org.uk&quot;&gt;London Hackspace&lt;/a&gt;. It needs some internals I think and a lot of playing with but so far so good. I've attempted different configurations on the printer but with limited success. The process is not refined but I'l get it right eventually. The top and bottoms of the cube are suspended and therefore only partially work. To get it right would require some sort of pyramid shape of two halves of the cube. I attempted this but sadly, there were issues with Blender converting to something replicator-g can understand.&lt;br /&gt;&lt;br /&gt;Im think a boarduino and some kind of IRC interface. When you hug the cube, it glows or something.Glados ain't gettng her stinking PCBs on this one! :D&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Python Course, Sunday 21st of November</title>
   <link href="http://lab.section9.co.uk/2010/10/31/python-course-sunday-21st-of-november.html"/>
   <updated>2010-10-31T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/10/31/python-course-sunday-21st-of-november</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;Come one, come all! Sign up for the &lt;a href=&quot;http://londonhackspace.eventwax.com/introduction-to-python&quot;&gt;Beginners Python Course&lt;/a&gt; at the London Hackspace. I'll be helping to run a course that runs fot the entire day. We'll be working on something a little like this:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TMy8jQRRpiI/AAAAAAAAAvg/t27cA7VS0IA/s1600/bm.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 309px; height: 320px;&quot; src=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TMy8jQRRpiI/AAAAAAAAAvg/t27cA7VS0IA/s320/bm.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5534005355980367394&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you've ever wanted to learn Python from scratch or pick up some tips, this course is for you.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>A Work in Progress</title>
   <link href="http://lab.section9.co.uk/2010/10/24/a-work-in-progress.html"/>
   <updated>2010-10-24T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/10/24/a-work-in-progress</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/TMSnMInAhtI/AAAAAAAAAvY/ue1v7gS11dE/s1600/IMG_0004.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 320px;&quot; src=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/TMSnMInAhtI/AAAAAAAAAvY/ue1v7gS11dE/s320/IMG_0004.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5531730069229176530&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A lot has been happening over the last week since the British Library Gig, an awful lot of changes that are somewhat mad but could turn out to be really good so I havent had chance to sort out a lot of newm funky things but I have got a lot to show you all rather soon. Until then, here is a little work in progress. You can have a lot of fun with the laser at the London Hackspace! :D&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>British Library Tweet-o-meter</title>
   <link href="http://lab.section9.co.uk/2010/10/15/british-library-tweet-o-meter.html"/>
   <updated>2010-10-15T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/10/15/british-library-tweet-o-meter</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TLgZ7orUsjI/AAAAAAAAAvI/XsScyCoLDeg/s1600/DSC_4847.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;&quot; src=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TLgZ7orUsjI/AAAAAAAAAvI/XsScyCoLDeg/s320/DSC_4847.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5528197054919389746&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Last night was the official launch of &lt;a href=&quot;http://www.growingknowledge.bl.uk/&quot;&gt;&quot;Growing Knowledge&quot;&lt;/a&gt;, an exhibition at the British Library. Originally created by &lt;a href=&quot;http://www.stevenjamesgray.com/&quot;&gt;Steven Gray&lt;/a&gt;, the Tweet-o-meters have emerged into the real world. Im quite proud of how it's all gone and, despite my bitching, Easy Tiger Creative did a good job on the finish. The evening was quite interesting; far too many people in suits and not enough lab-coats in my opinion. Still, it's great to see your creations come to life. Thanks also go to my boss, &lt;a href=&quot;http://www.digitalurban.org&quot;&gt;Andy Hudson-Smith&lt;/a&gt;, who's excellent salesmanship got us in there in the first place.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TLgbfrZERlI/AAAAAAAAAvQ/LGOcD033Gjk/s1600/DSC_4870.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;&quot; src=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TLgbfrZERlI/AAAAAAAAAvQ/LGOcD033Gjk/s320/DSC_4870.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5528198773635040850&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Steven's meters provide a JSON file, which my Ruby script pulls down and parses. With a modified version of the Arduino Gauges program by &lt;a href=&quot;http://russ.garrett.co.uk/&quot;&gt;Russ Garett&lt;/a&gt;, two Arduinos and a load of soldering later, the tweet-o-meters accurately rate the Twitter activity in 9 cities around the world.&lt;br /&gt;&lt;br /&gt;A full set of photos is &lt;a href=&quot;http://www.flickr.com/photos/section9/5081948641/&quot;&gt;available on my Flickr Page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The exhibition is due to run for 9 months and is free. Please go and check it out if you are near Kings Cross. You'll love it!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>WebGL - Section9 Style</title>
   <link href="http://lab.section9.co.uk/2010/10/06/webgl-section9-style.html"/>
   <updated>2010-10-06T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/10/06/webgl-section9-style</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;iframe src=&quot;http://player.vimeo.com/video/15567246?portrait=0&quot; width=&quot;640&quot; height=&quot;400&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Already, there are a few different engines out there for WebGL. Personally though, I find a lot of them over the top and I'd rather write my own as it's good practice and you get what you want out of it. I started with &lt;a href=&quot;http://learningwebgl.com/blog/&quot;&gt;the excellent Learning WebGL page&lt;/a&gt; which has a stack of lessons in the now familiar NeHe format (God Bless NeHe). So far, my little framework is going well, if a little slowly. Having to do things asynchronously and with events is not something I'm used to as OpenGL and C++ programming generally isn't built that way. Nevertheless, it's been a lot of fun. &lt;br /&gt;&lt;br /&gt;So far, shaders and basic primitives are supported with ease, along with a manager to manage these resources. There are 4 methods to override in the html page and thats it. I decided to use JQuery and JQueryUI as I am more familiar with that than prototype or similar. It works quite well in the main but much to do yet.&lt;a href=&quot;http://github.com/OniDaito/S9WebGL&quot;&gt; I've put the source up on GitHub&lt;/a&gt; so people can shout at me when I do things wrong.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Structured Light</title>
   <link href="http://lab.section9.co.uk/2010/10/06/structured-light.html"/>
   <updated>2010-10-06T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/10/06/structured-light</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TKxNmYrR5LI/AAAAAAAAAu4/uxCMLcIED8U/s1600/sl1.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 225px;&quot; src=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TKxNmYrR5LI/AAAAAAAAAu4/uxCMLcIED8U/s320/sl1.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5524876164731102386&quot; /&gt;&lt;/a&gt;&lt;br /&gt;A test of a simple structured light setup. The idea was to use a PS3 Eyetoy and the excellent code written by Kyle MacDonald - &lt;a href=&quot;http://sites.google.com/site/structuredlight/&quot; rel=&quot;nofollow&quot;&gt;sites.google.com/site/structuredlight/&lt;/a&gt; and Memo Akten - &lt;a href=&quot;http://www.memo.tv/&quot; rel=&quot;nofollow&quot;&gt;www.memo.tv&lt;/a&gt;. There are &lt;a href=&quot;http://www.flickr.com/photos/section9/&quot;&gt;more photos on my Flickr page&lt;/a&gt; and indeed, I'll be making some movies soon!&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/TKxNxAh9rhI/AAAAAAAAAvA/VIfk_jpbqfk/s1600/sl4.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 197px;&quot; src=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/TKxNxAh9rhI/AAAAAAAAAvA/VIfk_jpbqfk/s320/sl4.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5524876347228139026&quot; /&gt;&lt;/a&gt;&lt;br /&gt;I strapped together Memo's code under Windows as I finally managed to get hold of the PS3 Eyetoy driver that allows you to do 60fps. There is a special OpenFrameworks 'addon' that is part of Community Core Vision that allows you to run OF programs with 60fps. They don't tell you this ANYWHERE so I'm telling you all now! &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://nuigroup.com/forums/viewthread/2921/&quot;&gt;There is a thread on the NUIGroup forums&lt;/a&gt; that describe using the PS3 Eyetoy with CCV (thats a multitouch table program in Openframeworks btw) and this does work at 60fps but in order to get the structured light scanner to work, I needed the source code to drop into the capture program. Within the CCV Windows Source code, there are some classes that deal with driving the PS3Eyetoy specifically. Dropping these into the Windows version of the decoder worked really well.&lt;br /&gt;&lt;br /&gt;I need to take some photos of the setup. Essentially the projector goes below the eyetoy which sits infront of the projector in order to zoom in. Sadly, the throw, or size of the resulting projection really wasn't good enough for this experiment but I shall persevere.&lt;br /&gt;&lt;br /&gt;Thanks to Jonty at the &lt;a href=&quot;http://london.hackspace.org.uk/&quot;&gt;London Hackspace&lt;/a&gt; for use of his PS3 Eyetoy and the Projector!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Julian Assange talks about Bradley Manning and Wired</title>
   <link href="http://lab.section9.co.uk/2010/10/01/julian-assange-talks-about-bradley-manning-and-wired.html"/>
   <updated>2010-10-01T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/10/01/julian-assange-talks-about-bradley-manning-and-wired</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;object width=&quot;480&quot; height=&quot;385&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/1fEt4Rhy6ic?fs=1&amp;amp;hl=en_US&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/1fEt4Rhy6ic?fs=1&amp;amp;hl=en_US&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;480&quot; height=&quot;385&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;I missed the best opportunity to take my camera and get some great shots :( But It was cool to be in an actual press situation.&lt;br /&gt;&lt;br /&gt;I asked Julian Assange whether or not the technical aspects would be released opensource in order to aid their transparency. He said that the algorithms and similar were &quot;not very interesting&quot; and they &quot;had too much on their plate&quot;.&lt;br /&gt;&lt;br /&gt;I got the impression that Mr Assange is a man on a mission who is sick and tired of the same old questions; he keeps giving the same answers and appears to be fighting quite hard. Indeed, he is learning to avoid questions quite often. &lt;br /&gt;&lt;br /&gt;Perhaps the real question is, what do we, as the public do? Bring them down, get involved or sit on the sidelines?&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Python Course at the London Hackspace</title>
   <link href="http://lab.section9.co.uk/2010/09/27/python-course-at-the-london-hackspace.html"/>
   <updated>2010-09-27T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/09/27/python-course-at-the-london-hackspace</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;For these in the London area, there is a &lt;a href=&quot;http://wiki.hackspace.org.uk/wiki/Hack_Evening_Workshops&quot;&gt;large list of courses being held at the London Hackspace&lt;/a&gt;. I'll be running a Python Course towards the back end of October / Early November at Laboratory 24, Shoreditch, London. No idea of cost yet, though for hackspace members, it will likely be free. I'll be posting here, there and everywhere once the course is finalised. &lt;br /&gt;&lt;br /&gt;There are many other courses available too but if you are interested, make sure you&lt;a href=&quot;http://wiki.hackspace.org.uk/wiki/Hack_Evening_Workshops&quot;&gt; fill in the spaces on the wiki&lt;/a&gt; as courses with no interest won't be setup.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Back from BruCon</title>
   <link href="http://lab.section9.co.uk/2010/09/26/back-from-brucon.html"/>
   <updated>2010-09-26T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/09/26/back-from-brucon</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/TJ-lEOB9MRI/AAAAAAAAAuw/5pbUYYr5uU4/s1600/5015686511_f9b7b6029d.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 264px;&quot; src=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/TJ-lEOB9MRI/AAAAAAAAAuw/5pbUYYr5uU4/s320/5015686511_f9b7b6029d.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5521313160083878162&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Yeah, my first ever hacker-con (Infosec doesn't count). Saw an awful lot of good talks from various people and a couple of good workshops to boot. Props to the&lt;a href=&quot;http://www.brucon.org/&quot;&gt; Brucon guys&lt;/a&gt;, &lt;a href=&quot;http://samy.pl/&quot;&gt;samy.pl&lt;/a&gt; and &lt;a href=&quot;http://www.digininja.org/&quot;&gt;digininja&lt;/a&gt; for some great talks and training. Also, it being held in Belgium, the beer was good too!&lt;br /&gt;&lt;br /&gt;Generally, there was a lot of talk around RFID which was interesting but I don't quite see it going anywhere special just yet (especially the near field stuff) and a fair bit on XSS and similar, along with Web Application Firewalls and similar. A good selection of topics and a lot of fun.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Lil Cthulu made with LAZORS</title>
   <link href="http://lab.section9.co.uk/2010/09/20/lil-cthulu-made-with-lazors.html"/>
   <updated>2010-09-20T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/09/20/lil-cthulu-made-with-lazors</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/TJdJSwStNnI/AAAAAAAAAuo/6SIECbdhqtQ/s1600/IMG_0477.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 320px;&quot; src=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/TJdJSwStNnI/AAAAAAAAAuo/6SIECbdhqtQ/s320/IMG_0477.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5518960454915667570&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I finally got around to playing with the Hackspace Lazor! Its a nice toy (I hate to think how much electricity it uses). Decided to make a little keyring with Cthulu on it. A good way to spend a saturday night!&lt;br /&gt;&lt;br /&gt;Original image by &lt;a href=&quot;http://azcop.blogspot.com/2009/07/cthulhu.html&quot;&gt;Drew Pocza&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>How Leaky is your Country?</title>
   <link href="http://lab.section9.co.uk/2010/09/19/how-leaky-is-your-country.html"/>
   <updated>2010-09-19T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/09/19/how-leaky-is-your-country</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/TJYfJfElNCI/AAAAAAAAAuY/WNiKkaDsyNQ/s1600/wikileaksleaky.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 302px;&quot; src=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/TJYfJfElNCI/AAAAAAAAAuY/WNiKkaDsyNQ/s320/wikileaksleaky.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5518632641209119778&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Or rather, how much hammering can your server actually take? That is probably closer to the mark! I made the mistake of putting wikileaks in the URL. After wikileaks got hold of it, my server was absolutely hammered and as I hadn't managed to get it setup properly, it died rather quickly. It still seems up now though &lt;em&gt;touch wood&lt;/em&gt;, after the initial rush has worn off.&lt;br /&gt;&lt;br /&gt;Essentially, I've given up on flash. WebGL and Javascript are the way forward for us now without a doubt. Trying to get mapping into processing.js with the canvas calls was an interesting challenge. No doubt there will be much better ways to do this once people really get down to it. I was convinced into trying out Ruby on Rails for the setup and that has worked reasonably well but I do need to play around with the Apache/Passenger settings a little bit more I think as these are not so optimised. Also, under Firefox the effects of the dripping countries are a little slow (they are unoptimised at present). &lt;br /&gt;&lt;br /&gt;Still, that was totally unexpected and threw me in at the deep end! Most hits I've ever had I think. I need to have a play with the Apache logs later on next week to see how things pan out. &lt;a href=&quot;http://www.section9.co.uk/wikileaks&quot;&gt;How Leaky is your country?&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>TouchTable DJ Decks</title>
   <link href="http://lab.section9.co.uk/2010/09/12/touchtable-dj-decks.html"/>
   <updated>2010-09-12T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/09/12/touchtable-dj-decks</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;iframe src=&quot;http://player.vimeo.com/video/14897790?portrait=0&quot; width=&quot;640&quot; height=&quot;360&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;Although we didn't get this quite finished (I made the mistake of adding multiple touches too late in the game) we did get it sorted by the next hackspace tuesday meeting. Nevertheless, I soldiered on and it finally works.....ish&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;The table works using the Frustrated Total Internal Reflection technique. Essentially, infrared is emitted into the perspex sheet. Where your finger touches, the infrared leaks out which is detected by a camera with a correct filter. Using &lt;a href=&quot;http://www.google.com/url?sa=t&amp;source=web&amp;cd=2&amp;ved=0CBcQFjAB&amp;url=http%3A%2F%2Fnuicode.com%2Fprojects%2Ftbeta&amp;ei=lc6MTI6JIoqqngfk89iOCw&amp;usg=AFQjCNG78NLnV_-hOPAui4VEBRNrBq2T0Q&amp;sig2=yT9M3nNucGKVPYDpo9Gr5A&quot;&gt;Community Core Vision&lt;/a&gt; (which uses OpenCV and Openframeworks), one can change these bright spots into touches.&lt;br /&gt;With this table already built, we decided to build a DJ deck. Now this would probably be too much for just 24 hours but there were some useful programs out there that help.&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;The first is &lt;a href=&quot;http://www.google.com/url?sa=t&amp;source=web&amp;cd=1&amp;ved=0CB8QFjAA&amp;url=http%3A%2F%2Fwww.mixxx.org%2F&amp;ei=s86MTJq9JobQngf7pbyFCw&amp;usg=AFQjCNHNr1Ax9CegWkr19Nqgww57oGgThA&amp;sig2=7x6vUtImkslxUZMB7RY3jg&quot;&gt;Mixxx&lt;/a&gt;, the DJ program. This has midi bindings for many controllers. I figured the best bet was to write something in &lt;a href=&quot;http://www.google.com/url?sa=t&amp;source=web&amp;cd=3&amp;ved=0CCEQFjAC&amp;url=http%3A%2F%2Fopenframeworks.cc%2F&amp;ei=xM6MTL6mIoufnAfz8NmUCw&amp;usg=AFQjCNGf3s4rMuk8wdEs37e8jI3Sz5YHmA&amp;sig2=ykZd8VqQGAyzERp5D9jtkw&quot;&gt;Openframeworks&lt;/a&gt; that received TUIO messages from CCV, altered the controls and then sent MIDI signals to Mixxx. Linking two programs with Midi is possible under Linux using the virtual midi module and &lt;a href=&quot;http://lintian.debian.org/full/piem@debian.org.html&quot;&gt;AConnectGUI&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;The track is by the amazing &lt;a href=&quot;http://www.pronobozo.com/remixes/NIN%20-%20Only%20(Pronobozo%20Remix)&quot;&gt;Pronobozo. Grab it here!&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>London Music Hackday Photos</title>
   <link href="http://lab.section9.co.uk/2010/09/06/london-music-hackday-photos.html"/>
   <updated>2010-09-06T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/09/06/london-music-hackday-photos</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TITOhzVztFI/AAAAAAAAAuI/LkXpfny5bq0/s1600/4961855870_494cf1b943.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;&quot; src=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TITOhzVztFI/AAAAAAAAAuI/LkXpfny5bq0/s320/4961855870_494cf1b943.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5513758923921011794&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;So, I spent two days with a bunch of people who are very passionate about music and hacking. I'd never been to a hackday before, but I was glad I finally got around to it. I spent most of the time helping out in the hardware room where we had quite a few good hacks. Coverage of the day and all the projects are available at &lt;a href=&quot;http://london.musichackday.org/2010/&quot;&gt;http://london.musichackday.org/2010/&lt;/a&gt; and my photos are all up at &lt;a href=&quot;http://www.flickr.com/people/section9&quot;&gt;http://www.flickr.com/people/section9&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>London Music Hackday approaches..</title>
   <link href="http://lab.section9.co.uk/2010/09/03/london-music-hackday-approaches.html"/>
   <updated>2010-09-03T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/09/03/london-music-hackday-approaches</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;bblack&quot;&gt;..and I've been asked to help out with the hardware hack section of the event. It promises to be a lot of fun and I can't wait to be there but I've been working mega hard on a large project which I hope to get finished tonight. An awful lot of cool things are in the pipelines but just not finished enough to be released. Check out the &lt;a href=&quot;http://london.musichackday.org/2010/&quot;&gt;London Music Hackday Page&lt;/a&gt; in the meantime.&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>A trip to Bath</title>
   <link href="http://lab.section9.co.uk/2010/08/23/a-trip-to-bath.html"/>
   <updated>2010-08-23T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/08/23/a-trip-to-bath</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/THJxFrugJaI/AAAAAAAAAt0/ikxjfHvwgys/s1600/DSC_4440.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 245px;&quot; src=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/THJxFrugJaI/AAAAAAAAAt0/ikxjfHvwgys/s320/DSC_4440.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5508589636678591906&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;Oh God! Living in London and taking a trip out to the 'cantree' and visiting Bath!?!? What have I become? Nevertheless, have D100 will travel. I'd be lost without my &lt;a href=&quot;http://www.google.co.uk/products/catalog?q=50mm+nikon&amp;um=1&amp;ie=UTF-8&amp;cid=14316505760466272777&amp;ei=sXJyTLeCEITPnAfeqpzlCA&amp;sa=X&amp;oi=product_catalog_result&amp;ct=result&amp;resnum=1&amp;ved=0CCcQ8wIwAA&quot;&gt;50mm&lt;/a&gt;, &lt;a href=&quot;http://www.google.co.uk/products?q=11-16+tokina&amp;aq=f&quot;&gt;11-16mm Tokina&lt;/a&gt; and my reversing rings. I hadn't used the rings for a while but damn, I'm glad I brought them. I think my macro stuff needs work but I'm please with the results. The wide angle is the only way to do buildings it seems and the 1.8f on the Nikon lens is just lush.&lt;/span&gt;&lt;span class=&quot;bblack&quot;&gt;I'd rented out a few other lens like the Sigma 70-200 f2.8 and to be honest, I think it's generally overkill. I spend most of my time with the prime and the wide but I guess it's good to play with new things once in a while. &lt;a href=&quot;http://www.flickr.com/photos/section9/sets/72157624664483615/with/4919371653/&quot;&gt;The full set is over on Flickr&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>A little Graphic Design...</title>
   <link href="http://lab.section9.co.uk/2010/08/20/a-little-graphic-design.html"/>
   <updated>2010-08-20T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/08/20/a-little-graphic-design</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TG3OCdL4huI/AAAAAAAAAts/P8BJv85BwvE/s1600/collateral.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 287px;&quot; src=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TG3OCdL4huI/AAAAAAAAAts/P8BJv85BwvE/s320/collateral.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5507284460933514978&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;I've been working on a lot of things, I mean a hell of a lot! Working late! Running around! But, here is something you all might like.&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Current Status: Processing</title>
   <link href="http://lab.section9.co.uk/2010/08/14/current-status-processing.html"/>
   <updated>2010-08-14T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/08/14/current-status-processing</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;bblack&quot;&gt;You ever get to that point where you have lots of cool, unfinished work and possibly more things than you can handle? Well, thats me at the moment sadly! Lots and lots to get done and hardly anytime to sort it. Interesting graphical things involving HTML5, Wikileaks, iPads and even more to be sure! It's all looking good. Updates when I have them!&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Sonisphere 2010 Photos are up!</title>
   <link href="http://lab.section9.co.uk/2010/08/02/sonisphere-2010-photos-are-up.html"/>
   <updated>2010-08-02T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/08/02/sonisphere-2010-photos-are-up</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TFaoiScLGJI/AAAAAAAAAtY/q3hxW4S7TiI/s1600/DSC_4137.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 193px; height: 320px;&quot; src=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TFaoiScLGJI/AAAAAAAAAtY/q3hxW4S7TiI/s320/DSC_4137.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5500769301898664082&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/section9/&quot;&gt;Checkout my Flickr Stream&lt;/a&gt; for the latest and greatest in metal; Sonisphere 2010!&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;It was quite rough actually. Unlike Leeds 2009, I had to camp out and keep everything with me at all times. I don't recommend using an ASUS EeePC and a USB stick to backup your images. I lost a few doing that when I ran out of space. It's not economical to upgrade or buy more spares for my D100 so I decided to simply copy the photos over each day. Not a good idea! Also, I you have a friend who has a press pass, make sure you take your charger with you as your press buddy can charge batteries!&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;I'm still a huge fan of the Nikon 50mm Lens. It's the best! At 1.8f you can make a lot of mistakes with the depth but it still seems to be the only lens fast enough to grab the action. I rented a Sigma 2.8f 70-200mm from &lt;a href=&quot;http://www.fixationuk.com/Fixation/Fixation%20-%20Home/Fixation%20-%20Home.html&quot;&gt;Fixation&lt;/a&gt; (who so far have been ok - touch wood) and although it helped, I don't think I'd use one again. With being so close to the action, the 50 and my Tokina 11-16 2.8f seemed to work much better. Again though, catching the action is hard work and I still have much to learn.&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>On Location x 2!</title>
   <link href="http://lab.section9.co.uk/2010/07/28/on-location-x-2.html"/>
   <updated>2010-07-28T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/07/28/on-location-x-2</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;bblack&quot;&gt;Yup, I've been busy with a few side projects. I've been working for a wise man on site in Covent Garden for an interesting little event that seems to involve the colour green an awful lot. Can't say much more than that at the moment! :D&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;On the other side of things, I'm off to Sonisphere tomorrow so keep your eyes peeled! Lots of fun photographs to come!&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Just a little Tease</title>
   <link href="http://lab.section9.co.uk/2010/07/25/just-a-little-tease.html"/>
   <updated>2010-07-25T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/07/25/just-a-little-tease</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/TEy0mqHufgI/AAAAAAAAAtQ/gHgYnex7VTc/s1600/chairmanjontyfinal.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 216px; height: 320px;&quot; src=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/TEy0mqHufgI/AAAAAAAAAtQ/gHgYnex7VTc/s320/chairmanjontyfinal.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5497967821347257858&quot; /&gt;&lt;/a&gt;&lt;span class=&quot;bblack&quot;&gt;Our beloved leader of the London Hack-Space! Been a while since I've done any graphic design stuff. Twas good for a laugh!&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Animation10</title>
   <link href="http://lab.section9.co.uk/2010/07/20/animation10.html"/>
   <updated>2010-07-20T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/07/20/animation10</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/TEWL6f6n1-I/AAAAAAAAAsg/VvmyPNpMsL4/s1600/10.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 214px;&quot; src=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/TEWL6f6n1-I/AAAAAAAAAsg/VvmyPNpMsL4/s320/10.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5495952757391611874&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;They are here! The photos have been uploaded and are available to view on the &lt;a href=&quot;http://www.cs.manchester.ac.uk/Animation10/&quot;&gt;Animation10&lt;/a&gt; website. This was my first interactive exhibit and it went down a storm. Plenty of lessons learnt though but for now, have a peek at these great shots from the day.&lt;/span&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TEWMKBXh9jI/AAAAAAAAAso/y5tZFEZCLkU/s1600/13.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 211px; height: 320px;&quot; src=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TEWMKBXh9jI/AAAAAAAAAso/y5tZFEZCLkU/s320/13.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5495953024069269042&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;Kids looking slightly confused but intrigued as to what is going on and what all these weird and wonderful things are. Most were totally drawn in by all the strange bits Manchester had managed to rustle up which was great news indeed.&lt;/span&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/TEWMdb7xPhI/AAAAAAAAAsw/buQPE-IvJPQ/s1600/17.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 214px; height: 320px;&quot; src=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/TEWMdb7xPhI/AAAAAAAAAsw/buQPE-IvJPQ/s320/17.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5495953357618101778&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;Getting the stickers was really the highlight of the whole thing and being able to attach your own personal videos gave it a real buzz.&lt;/span&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/TEWMusQMEOI/AAAAAAAAAs4/tFH-PUlefpo/s1600/22a.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 214px; height: 320px;&quot; src=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/TEWMusQMEOI/AAAAAAAAAs4/tFH-PUlefpo/s320/22a.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5495953654056489186&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;Overall, there were plenty of things I'd do differently. The scanners should really be fixed and some kind of conveyor belt would have been a lot cooler. More video effects and a slightly more robust turning knob would have been an improvement but all in all, a huge success. Thanks go out to Toby Howard, Manchester Computer Science, Andy Hudson-Smith, CASA and Chris Speed. Also, Dr John Latham for his invaluable help on the day and Mr Web for setting up the web backend.&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Apache, GIT and Mediawiki to manage design and projects</title>
   <link href="http://lab.section9.co.uk/2010/07/19/apache-git-and-mediawiki-to-manage-design-and-projects.html"/>
   <updated>2010-07-19T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/07/19/apache-git-and-mediawiki-to-manage-design-and-projects</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;bblack&quot;&gt;I thought I'd put down my thoughts and experiences on keeping track of your personal projects and data. I've been through a lot of various methods. Everything is intertwined; backup, code repos, security, accessibility etc etc. My method certainly wont suit everyone but it may give you some thoughts. In a nutshell, I use Apache, GIT and Mediawiki on a small MiniITX machine with USB disk cloning to run all my systems.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;I've used subversion and mercurial before. Subversion was great because it support binary files; very useful when you have a large PSD to backup. However, when one of my hard-disks broke, I lost the most recent updates and couldn't get back the newer versions I had on my workstation. This was annoying. That, and subversions silly revision system meant a change was needed. Subversion doesn't really say what a repos or a directory really is. So if I updated one project, then another project the revision number for everything would go up twice! Not good.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;Mercurial was dead simple though. I converted a few of the SVN based projects over but found that quite tricky. Mercurial is what I use on a daily basis at work. Because it is written in Python it is quite straight forward and works well. However, it does suffer from serious flaws when branching (apparently) but also it is limited to filesizes under 10meg. I say limited - it complains about it but tries anyway. Creating a new repository remotely was also a pain. What if I'm working remotely and need to backup to my system at home? I wrote a quick python script to do this but it wasn't particularly good.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;Because of peer-pressure and the other problems, I decided to look at GIT. Github is a great site with a lot of excellent people on it. Git's commands are more esoteric but understandable after a while and support for binaries is good. Using &lt;a href=&quot;http://hg-git.github.com/&quot;&gt;Hg-Git&lt;/a&gt; makes converting from Mercurial quite easy. Following &lt;a href-&quot;https://help.ubuntu.com/community/Git&quot;&gt;the Ubuntu GIT Guide&lt;/a&gt; was quite easy although I use &lt;a href=&quot;https://git.wiki.kernel.org/index.php/Gitweb&quot;&gt;GitWeb&lt;/a&gt; and not GitView which is rather awful. This means I can access my repositories anywhere and indeed, create repositories remotely. Annoyingly, because I'm using gitosis, I need to keep a copy of the Gitosis repos on every machine that needs access to my home GIT Server and a custom script to make it work but it's a small price to pay for better security and efficiency. So far, I approve.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;Mediawiki was a suggestion by a friend for keeping notes and thoughts and so far, it has worked a treat. Sure you can pay Omni some money and get a mac osx organiser but what about Linux or Windows? What about mobile clients? With the plethora of plugins available (GeSHI and PDF Creation being two of my favorites) having your own wiki is a great idea.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;So now you can backup code, keep notes, and access anywhere. All this needs to run on something. I use a fan-less, MiniITX board with one large SATA drive to store all this, running Ubuntu. Why you ask? Well I wanted something low power and capable with an emphasis on quiet. Using one SATA drive means that disk cloning is very easy. Plug in a USB enclosure, run dd_rescue and you get an identical copy of your drive. It's already saved me once and I heartily recommend it.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;If you set up all the right port forwards and certificates you can access your box over a home connection with reasonable speed. The whole thing works quite well and has some degrees of protection. Full disk encryption, arpwatch and Snort provide a good defence against intrusion and holding your wiki off-site on your webhost means you'll always have access, even if your home machine goes down (which it will once or twice)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;Overall, this has met my needs for security, remote access to everything and my various requirements for source control and backup. I heartily recommend something similar. It's all free software and it all works.&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>D100 is back! Time to shoot some graves</title>
   <link href="http://lab.section9.co.uk/2010/07/18/d100-is-back-time-to-shoot-some-graves.html"/>
   <updated>2010-07-18T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/07/18/d100-is-back-time-to-shoot-some-graves</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TEONJUDy0DI/AAAAAAAAAsY/LZHWa_VGRD4/s1600/DSC_2998.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 213px; height: 320px;&quot; src=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TEONJUDy0DI/AAAAAAAAAsY/LZHWa_VGRD4/s320/DSC_2998.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5495391161465098290&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;Yes indeed! My D100 went away to be cleaned and came back....well worse apparently! One can notice problems if you look really hard. However I never realised how much I missed it. Im glad its back and so I made haste this evening to the nearby graveyard over at Hampstead.&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;The location is gorgeous and there are a few famous tombs there too! Im a bit out of practice and since it's monday tomorrow didn't stay too long but I managed to take what I thought was a good comeback set. I had so much fun and theres some funky video to come as well!&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/section9/sets/72157624531350138/&quot;&gt;Checkout my little Graveyard shoot on flickr&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Electronic Arts Coverage of Animation10</title>
   <link href="http://lab.section9.co.uk/2010/07/16/electronic-arts-coverage-of-animation10.html"/>
   <updated>2010-07-16T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/07/16/electronic-arts-coverage-of-animation10</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;bblack&quot;&gt;Electronic Arts covered Animation10 and included a nice picture of our Heath Robinson-esque event. You can check out the coverage &lt;a href=&quot;http://insideea.com/2010/07/16/animation-10-inspiring-the-future-animators-of-the-uk/&quot;&gt;on their blog over here&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>First Ever Installation Success!</title>
   <link href="http://lab.section9.co.uk/2010/07/12/first-ever-installation-success.html"/>
   <updated>2010-07-12T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/07/12/first-ever-installation-success</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;bblack&quot;&gt;Yes, I am returning from the North after a very productive few days. The animation10 festival was a great success. A lot of school kids are now interested in retro PC parts, QR Codes and computer vision which can only be a good thing! The kids were a great laugh and there were some talented ones among them for sure. Had a nice chat with a 12 year old about Blender and Python! Amazing!&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;I'll be posting up video, time-lapses and photos here on the blog and on Flickr once I get them off the official photographer guys. There's quite a lot to go through and many lessons were learnt. GStreamer, Openframeworks, Arduino and Python all kept up to the task with MPlayer and ffmpeg working hard behind the scenes. Having a mixture of scripting languages and hardcore C works well I think for this sort of thing. Having the build environment with me helped a lot too though I think I may switch away from that in the future.&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;All in all, great energy, positive vibe and lessons learnt. I shall rock on like the Rock and Roll Computer Scientist I am!&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;Also, many thanks to all these who put me up over the last 6 days and i'm sorry i didnt get to see everyone. finally, remember this: you are never too old to put a traffic cone on the head of a statue in Leeds!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;UPDATE! I did have a timelapse but I'm not sure on the legal rights since it features kids so heres an iPhone panorama instead: &lt;a href=&quot;http://www.flickr.com/photos/section9/4787452442/&quot;&gt;http://www.flickr.com/photos/section9/4787452442/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Virtualisation with CoRD and Virtualbox</title>
   <link href="http://lab.section9.co.uk/2010/07/02/virtualisation-with-cord-and-virtualbox.html"/>
   <updated>2010-07-02T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/07/02/virtualisation-with-cord-and-virtualbox</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;bblack&quot;&gt;I though I'd put a little note up here regarding my thoughts on virtualisation for testing things like websites and other programs. Previously, I've used virtualbox on my linux box to run photoshop and similar and it has worked quite well considering. At work however, I thought a more distributed system with some dedicated hardware would do the trick.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;We have a small, Core2 Duo 64Bit machine lying around. I installed Linux Ubuntu 10.04 with the non-free version of Virtual Box. It is important that you &lt;span style=&quot;font-weight:bold;&quot;&gt;DONT USE THE OSE BUNDLED VERSION&lt;/span&gt; as this doesn't come with RDP support and USB forwarding. You'll need to download the Oracle version from the VirtualBox page. Once this is installed, you can ssh into your box, scp over any ISOs and get installing your virtual machines.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;Virtualbox comes with the command &lt;span style=&quot;font-weight:bold;&quot;&gt;VBoxHeadless&lt;/span&gt; which allows you to start your machines from a command line with no graphics. You can then RDP into these with the correct program. &lt;a href=&quot;http://cord.sourceforge.net/&quot;&gt;I use CoRD&lt;/a&gt; because I've never been a fan of Chicken of the VNC or similar. Give CoRD your remote machine and the port (I've setup 5000-5003 for my machines) and away you go.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;Performance wise, two XP instances run quite well. Vista causes a lot of issues though as it is much more of a memory hog. Haven't tried Windows 7 yet. I'm debating setting up a similar system with Windows 7 as the host OS running Linux and XP as the virtual machines. This may or may not be faster. The machine at home is an older Pentium4 but it does have Hyperthreading (I think) so maybe we'll get some more performance.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;There are &lt;a href=&quot;http://www.virtualbox.org/wiki/Documentation&quot;&gt;some great guides on the Virtualbox page&lt;/a&gt; and so far, performance hasn't been that bad. Testing the various flavors of IE is quite easy when you have 2 XP machines running side by side. Sure, it's not amazingly fast but it's made my life easier and gotten some use out of an older machine.&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>How to record and print your tale</title>
   <link href="http://lab.section9.co.uk/2010/06/30/how-to-record-and-print-your-tale.html"/>
   <updated>2010-06-30T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/06/30/how-to-record-and-print-your-tale</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;object width=&quot;640&quot; height=&quot;360&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=12959820&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=12959820&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;640&quot; height=&quot;360&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;A live setup of tales of things with stickers has been taking up a fair bit of my time these days. It's been a rollercoaster ride trying to get the various different systems together. So far Ive used three languages, several command line programs and muchous GStreamer related gubbins. Needs a little pickup on the QR Scanning but once thats done, we can get down to stress testing.&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>More Sunflow</title>
   <link href="http://lab.section9.co.uk/2010/06/29/more-sunflow.html"/>
   <updated>2010-06-29T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/06/29/more-sunflow</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/TCogm_Q08FI/AAAAAAAAAsM/aczfDMhlmd0/s1600/london_ambocc1.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 256px;&quot; src=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/TCogm_Q08FI/AAAAAAAAAsM/aczfDMhlmd0/s320/london_ambocc1.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5488234950093500498&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;I'm still enjoying sunflow a lot. It gives some lovely results, especially when using ambient occlusion like the above. I still need some nicer graphics to play with though. Siom kind of export to Sunflow from processing or Cinder would be nice (simply writing out an animation to sunflow would rock). The above image took 3 hours to render on an I7. Not quite as fast as Max but still pretty cool.&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>By jove! It's a video playing carousel-me-bob!</title>
   <link href="http://lab.section9.co.uk/2010/06/24/by-jove-its-a-video-playing-carousel-me-bob.html"/>
   <updated>2010-06-24T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/06/24/by-jove-its-a-video-playing-carousel-me-bob</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/TCONKpp3E7I/AAAAAAAAAsE/7Rvev2r10XI/s1600/moustache_guy.png&quot;&gt;&lt;img style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 289px; height: 283px;&quot; src=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/TCONKpp3E7I/AAAAAAAAAsE/7Rvev2r10XI/s320/moustache_guy.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5486383985187034034&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;I've been playing with HTML5 and the Video Elements. I wanted to come up with a way of selecting videos in a carousel but also with thumbnails and subtitles. &lt;a href=&quot;http://www.section9.co.uk/html5&quot;&gt;This is the result and it works quite well&lt;/a&gt;. It's partially supported on the iPad and iPhone but there are a lot of issues to overcome with the iPhone. It's rather a shame really but it works great in normal browsers. It's probably not the best method of delivery for such a platform but at least Apple could have sorted out click and swipe events on the damn video element!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;I'd love to get some feedback on this because I think this has potential as a way of sorting out stories made from media.&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>EAGLE and Arduino for teh win!</title>
   <link href="http://lab.section9.co.uk/2010/06/17/eagle-and-arduino-for-teh-win.html"/>
   <updated>2010-06-17T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/06/17/eagle-and-arduino-for-teh-win</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;bblack&quot;&gt;For the main interaction of the Animation10 stand, I've needed to build a switch. Not just any switch but quite a fancy switch all told. It needs to have flashing lights, dials and an arduino in there just for kicks (and blog cred of course!). Most importantly, it needs a large red button because kids (and adults) can't resist pressing them. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;So first off, the prototype. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TBpGsZ6TzyI/AAAAAAAAArE/Ub-JOJ_grrU/s1600/IMG_0048.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;&quot; src=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TBpGsZ6TzyI/AAAAAAAAArE/Ub-JOJ_grrU/s320/IMG_0048.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5483773224960642850&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;Take some breadboard, lots of wires and all the rest and you can play around with things till they either fit or break. I think I've more or less got the hang of this now so that's good news. Once that's done, a few sketches and a quick use of EAGLE, you can get a decent printout for etching your own boards.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/TBpHFIiCFgI/AAAAAAAAArM/KUafe9U6xL4/s1600/IMG_0056.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 320px;&quot; src=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/TBpHFIiCFgI/AAAAAAAAArM/KUafe9U6xL4/s320/IMG_0056.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5483773649792144898&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;Always be careful with which trace you use in EAGLE; bottom or top and do the reversals you need to do with any artwork or similar. Again, you want black on transparent if using positive board.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;Finally, with the schematic from Google Sketchup, we end up with this:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/TBpHc4PGS6I/AAAAAAAAArU/vUHWaicTOs0/s1600/IMG_0055.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 320px;&quot; src=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/TBpHc4PGS6I/AAAAAAAAArU/vUHWaicTOs0/s320/IMG_0055.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5483774057734622114&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;bblack&quot;&gt;So far so good. There are more buttons to come but this is just a taster of the fun that is to come.&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Google Sketchup</title>
   <link href="http://lab.section9.co.uk/2010/06/14/google-sketchup.html"/>
   <updated>2010-06-14T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/06/14/google-sketchup</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/TBZgnVQinII/AAAAAAAAAq8/HJhweNGKT18/s1600/sketchup.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 234px;&quot; src=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/TBZgnVQinII/AAAAAAAAAq8/HJhweNGKT18/s320/sketchup.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5482675825207843970&quot; /&gt;&lt;/a&gt;&lt;br /&gt;I've been playing with Google Sketchup. &lt;br /&gt;&lt;br /&gt;It's a great little program though it does take some getting used to. Its always a good idea to use the tape-measure tool to lay out where you are making your holes. Click and then before you do anything else, type the measurement in the bottom right. Took me ages to get this sorted but it seems to work great now.&lt;br /&gt;&lt;br /&gt;Drilling holes ion perspex is a tricky business; it has a tendency to melt. Using white spirit with your pillar drill works a bit but it's hard work. Nevertheless, the animation10 button continues to improve!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>GStreamer &amp; Openframeworks Issues</title>
   <link href="http://lab.section9.co.uk/2010/06/11/gstreamer-openframeworks-issues.html"/>
   <updated>2010-06-11T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/06/11/gstreamer-openframeworks-issues</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;I've been working pretty hard with GStreamer and Openframeworks in order to get audio synchronisation and two sinks; one for preview and one for recording files to disk. So far, it's been pretty tough. Vorbis was giving be lots of Seg faults and for the life of me I couldn't figure out why.&lt;br /&gt;&lt;br /&gt;Turns out that the &lt;a href=&quot;http://www.openframeworks.cc/forum/viewtopic.php?f=9&amp;t=4068&quot;&gt;lovely folks on the Openframeworks forums&lt;/a&gt; had the answer. libfmodex is causing problems with GStreamer audio and one needs to comment out all references to this and the library that is linked.&lt;br /&gt;&lt;br /&gt;Developing with Code::Blocks is a bit of pain but once you get it all set up it's not so bad. Looking for these deep bugs though is pretty hard and getting your head into the game is half the battle. I'm glad to report though that Gstreamer is a great little package I hadn't played with before and that if you are doing anything video related, you should definitely check this out.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Spycam Timelapse Part1</title>
   <link href="http://lab.section9.co.uk/2010/06/08/spycam-timelapse-part1.html"/>
   <updated>2010-06-08T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/06/08/spycam-timelapse-part1</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;object width=&quot;480&quot; height=&quot;385&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/8BbnDAV95y4&amp;hl=en_US&amp;fs=1&amp;&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/8BbnDAV95y4&amp;hl=en_US&amp;fs=1&amp;&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;480&quot; height=&quot;385&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;So here is the first result of my new little Spycam. I bought &lt;a href=&quot;http://cgi.ebay.co.uk/Spy-Key-Chain-Camera-DVR-Covert-Video-Audio-Recorder-/110468930888?cmd=ViewItem&amp;pt=LH_DefaultDomain_0&amp;hash=item19b8761d48&quot;&gt;one of these little cameras from eBay&lt;/a&gt; and decided that what I really wanted was a longer life-time. So with the use of an optocoupler, an ATTiny13, a buspirate, EAGLE and some etching treatment, here is the resulting video. Its around 3 and a half hours at the moment with two lipoly batteries. I'll post some instructions on how to make your own at some point. So far, it works ok but I'm hoping to get a full 8 hours if possible.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>GStreamer vs Quicktime vs OpenFrameworks</title>
   <link href="http://lab.section9.co.uk/2010/06/05/gstreamer-vs-quicktime-vs-openframeworks.html"/>
   <updated>2010-06-05T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/06/05/gstreamer-vs-quicktime-vs-openframeworks</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;I've been having fights with all three at the moment. Openframeworks is nice because it uses OpenGL and the C++ language which is great for computer graphics and as it's cross platform, it's great for OSX and Windows and Linux. Trouble is, there are some glaring problems when it comes to recording modified video. It seems that its really Apple's fault.&lt;br /&gt;&lt;br /&gt;For Mac OSX, OF uses Quicktime as really, it's the only option. Sadly, the Quicktime C bindings are no longer &lt;span style=&quot;font-style:italic;&quot;&gt;in fashion&lt;/span&gt; with Apple. This is damn shame because finding documentation on it is a pain in the arse. Now it appears that grabbing frames is fine, and there has been some sterling work in recording video back to a MOV again.&lt;br /&gt;&lt;br /&gt;However, this is no good if you are playing with sound as well.&lt;br /&gt;&lt;br /&gt;Yup, basically what I'm talking about is some kind of VJ setup. Press a button, record sound and video, modify video, save to compressed mov. Now this is do-able with the new fancy-pants-core-video but thats not much use when you want it linked to an Arduino and all the rest. So I abandoned the mac and looked at &lt;a href=&quot;http://www.gstreamer.net/&quot;&gt;GStreamer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;GStreamer has some great documentation and is really easy to learn. I love the idea of their pads and bins and similar. It's great that they have a method for running the plugins on the command line. Looking at the OF code for their linux distro, I can see why they chose it.&lt;br /&gt;&lt;br /&gt;So yes, Quicktime for the lose. GStreamer for the win.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Brucon Lightning Talks</title>
   <link href="http://lab.section9.co.uk/2010/05/30/brucon-lightning-talks.html"/>
   <updated>2010-05-30T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/05/30/brucon-lightning-talks</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;I fancy going to Brucon this year. Managed to get my ticket sorted and maybe even a motorbike to take me there. On the volunteers list, there was talk of designing the lightning talks logo. I thought I'd step up and see what I could come up with.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TAKBPWK3RpI/AAAAAAAAAq0/8HELxdE-mLo/s1600/Lightning+Talks+Brucon+2.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 218px;&quot; src=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/TAKBPWK3RpI/AAAAAAAAAq0/8HELxdE-mLo/s320/Lightning+Talks+Brucon+2.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5477082197485110930&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Feedback? Criticisms? All welcome. I thought I'd try and go for something that was close to the original logo to keep continuity but also make something that looks dynamic and fast and action packed. Whether this gets accepted or not, we'll soon find out.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>First prototype for Animation10</title>
   <link href="http://lab.section9.co.uk/2010/05/27/first-prototype-for-animation10.html"/>
   <updated>2010-05-27T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/05/27/first-prototype-for-animation10</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;object width=&quot;400&quot; height=&quot;225&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=12077661&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=12077661&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;400&quot; height=&quot;225&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;My co-worker and I are staring in the first cut of the portable Tales of Things for Animation10. The whole thing is a mashup between OSX Native apps and a suite of scripts running on a Linux Mint install. The idea is that kids can record their own stories and thoughts about the interesting computer science things they will see and scan during the day. And of course, everyone loves stickers.&lt;br /&gt;&lt;br /&gt;So far, it's been a breeze. The recording side on OSX is really easy once you figure out the &lt;span style=&quot;font-weight:bold;&quot;&gt;QuicktimeCaptureLayer&lt;span style=&quot;font-style:italic;&quot;&gt;&lt;/span&gt;&lt;/span&gt; class (as oppose to just QuicktimeCapture). CherryPy and Python take a lot of the scripting headaches out of the equation and handle the receiving of MP4 files really well. &lt;br /&gt;&lt;br /&gt;I had issues with Dymo's Mac SDK; it uses Applescript which I've never really liked. I decided to go with - shock horror - the Linux SDL and I have to hand it to Dymo, this compile first time and works with CUPS like a dream! &lt;span style=&quot;font-weight:bold;&quot;&gt;lpr&lt;/span&gt; for the win!&lt;br /&gt;&lt;br /&gt;Finally, OpenCV, libdecodeqr and a cheap logitech webcam finish things off nicely. All in all, it works rather well for a mashup that uses 3 languages (4 if you include bash!)&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Etching you own Circuit Boards</title>
   <link href="http://lab.section9.co.uk/2010/05/23/etching-you-own-circuit-boards.html"/>
   <updated>2010-05-23T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/05/23/etching-you-own-circuit-boards</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/S_mpAW_4UNI/AAAAAAAAAqM/7qfA82B8xrE/s1600/IMG_0030.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;&quot; src=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/S_mpAW_4UNI/AAAAAAAAAqM/7qfA82B8xrE/s320/IMG_0030.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5474592645684154578&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Out of frustration and a great deal of curiosity, I decided to etch my own PCBs. Why? Because it makes things easy. When you are fiddling around with wire, soldering irons and ICs, having a path to follow, places for solder to flow and a solid base make all the difference. I really hate vero board as it globs everywhere. Solderless breadboard is ok for temporary stuff and when you have good wire that stays put. But in the end, using a proper PCB is the best.&lt;br /&gt;&lt;br /&gt;This is part of my spy-cam time lapse experiment and the solar powered router build. I've decided to build boards to mount these components safely as both need to be rugged and in the case of the former, keeping everything in place and not bumping around is very important.&lt;br /&gt;&lt;br /&gt;To etch PCBs you need:&lt;br /&gt;&lt;br /&gt;A Design Printed on overhead transparencies times 2&lt;br /&gt;&lt;a href=&quot;http://uk.farnell.com/jsp/search/productdetail.jsp?SKU=141300&quot;&gt;Positive photo sensitive board&lt;br /&gt;&lt;/a&gt;Developer Liquid&lt;br /&gt;Etching Liquid&lt;br /&gt;Two Pyrex Dishes (or plastic tubs you dont really need!)&lt;br /&gt;Gloves&lt;br /&gt;Tin Snips&lt;br /&gt;UV Light&lt;br /&gt;Agitation!&lt;br /&gt;&lt;br /&gt;The first step is to get a design together. You can download your own or use the excellent &lt;a href=&quot;http://www.cadsoftusa.com/&quot;&gt;EAGLE program&lt;/a&gt;. Using EAGLE is a tutorial in itself but its a great program. You should print off two such copies of your design, one of them backwards. Place them back to back so that any missing spots due to the printer are averaged out.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/S_mqgUn81UI/AAAAAAAAAqU/_lv2uvwvYm0/s1600/IMG_0029.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;&quot; src=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/S_mqgUn81UI/AAAAAAAAAqU/_lv2uvwvYm0/s320/IMG_0029.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5474594294314358082&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once this is done, line them up over your board. Developing board means exposing it to light, specifically UV. I used a proper developing box but other light bulbs (possibly a  'natural light' blub) work quite well. The PCB board I used takes around 8 minutes to develop. Dont worry about taking the wrapper off in normal light, but don't be slow with it either.&lt;br /&gt;&lt;br /&gt;Once this is done, place in the developer. This only takes around 3-5 minutes or so. Rinse off the board and prepare the etching liquid. &lt;span style=&quot;font-weight:bold;&quot;&gt;This stuff is EVIL and will STAIN ANYTHING!&lt;/span&gt; Be careful and make sure you have gloves on. Etching a board takes around 45 minutes. During this time you'll need to agitate the board. This means sloshing it around. Some people do this for the first 5 minutes. If you have a friend who is quite inventive, you can build something to rock your pyrex.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S_mrr2hhAhI/AAAAAAAAAqc/LmVKnVcR6Xk/s1600/IMG_0028.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;&quot; src=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S_mrr2hhAhI/AAAAAAAAAqc/LmVKnVcR6Xk/s320/IMG_0028.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5474595591904363026&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is an arduino powering a servo which rocks a little seesaw. &lt;span style=&quot;font-weight:bold;&quot;&gt;Genius!&lt;/span&gt;&lt;br /&gt;Once this process is finished, you should have a set of boards ready to be cut. I tried dremels and saws but the best by far is the set of what appear to be tin-snips in the picture. They worked perfectly with the board I used.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/S_msLIzj_kI/AAAAAAAAAqk/08lds6XIlhE/s1600/IMG_0036.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 320px;&quot; src=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/S_msLIzj_kI/AAAAAAAAAqk/08lds6XIlhE/s320/IMG_0036.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5474596129387839042&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Many thinks to Solexious at the London Hackspace for all his help. The London Hackspace has an excellent guide with links to the resources you need. Also, &lt;a href=&quot;http://blog.makezine.com/archive/2010/02/circuit_skills_circuit_board_etchin.html&quot;&gt;there is a great video here on youtube&lt;/a&gt; that I used as a reference. &lt;br /&gt;&lt;br /&gt;I must admit, making your own boards is a great idea and it's the way forward for me from now on.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Embarking on an Art Installation</title>
   <link href="http://lab.section9.co.uk/2010/05/21/embarking-on-an-art-installation.html"/>
   <updated>2010-05-21T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/05/21/embarking-on-an-art-installation</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/S_awk8EaDXI/AAAAAAAAAp8/TjFdKVzomPk/s1600/IMG_0033.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 189px;&quot; src=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/S_awk8EaDXI/AAAAAAAAAp8/TjFdKVzomPk/s320/IMG_0033.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5473756545761807730&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.cs.manchester.ac.uk/Animation10/&quot;&gt;Animation10&lt;/a&gt; is a festival held in Manchester and Salford to promote Computer Science, Programming and Animation within Schools and College. Each year, schools enter a animation competition, with winners announced at a special exhibition and event held at the &lt;a href=&quot;http://www.thelowry.com/&quot;&gt;Lowry in Salford&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.talesofthings.com&quot;&gt;Tales of Things&lt;/a&gt; has been asked to take part with an interactive stand where children can learn about interesting computing objects and record their own tales of the day. I've been asked to run with this and pretty much re-invent tales of things for a mobile installation. Sounds like a lot of fun.&lt;br /&gt;&lt;br /&gt;I've had plenty of time sketching things out, as you can see from the image above. So far, the basics are more or less in place. I've had some issues with sticker printing under OSX but Linux seems to play nice, plus Linux has the awesome &lt;a href=&quot;http://www.mplayerhq.hu/design7/news.html&quot;&gt;mencoder&lt;/a&gt; package for compressing video, so when the kids record their tales, we can get some nice HTML5 compliant pages built on-the-fly.&lt;br /&gt;&lt;br /&gt;Wondering about the overall look of the setup. Personally, I'm inclined to go down the 1950s route of sepia, big microphones and steam-punk style cameras. We'll have to scout around eBay for some nice bits. &lt;br /&gt;&lt;br /&gt;More to come as the work progresses.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Future Everything</title>
   <link href="http://lab.section9.co.uk/2010/05/16/future-everything.html"/>
   <updated>2010-05-16T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/05/16/future-everything</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;object width=&quot;400&quot; height=&quot;225&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=11784354&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=11784354&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;400&quot; height=&quot;225&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;This is a montage of the &quot;Remember Me&quot; exhibition at Futureverything. The festival was held up in Manchester and we got to install &quot;Tales of Things&quot; into the Oxford Road Oxfam shop.&lt;br /&gt;&lt;br /&gt;The idea was for people to come in and leave stories about their donated objects. When people came into the shop to browse their objects they would be given a wand to scan the objects and here the tales of their past.&lt;br /&gt;&lt;br /&gt;It worked a treat and Oxfam managed to sell most of the items we tagged up!&lt;br /&gt;&lt;br /&gt;The technical side of things were quite interesting. We used both the RFID iPhone box with Audioboo and a bluetooth RFID reader built into a makerbot-style plastic wand. The setup was quite simple but had a few challenges to beat, not least was the A-Team style repair on one of the readers' bluetooth modules. We had to put together a few wands in quick time and make sure everything worked 'in-the-field' without a run through. It was fun and I think the peeps who came into the shop had a good time.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>We made WIRED.co.uk</title>
   <link href="http://lab.section9.co.uk/2010/05/12/we-made-wired-co-uk.html"/>
   <updated>2010-05-12T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/05/12/we-made-wired-co-uk</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;http://www.wired.co.uk/news/archive/2010-05/12/oxfam-donations-get-rfid-memories-read-by-iphones&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 134px;&quot; src=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/S-sgwWPo5NI/AAAAAAAAApc/IrKTBr6kdYo/s320/oxfam.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5470502187348583634&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.wired.co.uk/news/archive/2010-05/12/oxfam-donations-get-rfid-memories-read-by-iphones&quot;&gt;Read the Article on WIRED.co.uk&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Yup! The little Oxfam project of which I have played my part has managed to get coverage in Wired.co.uk! It's one step closer to the dream of actually being published in WIRED. Essentially, I've spent a lot of time in the back of the Oxfam shop playing with RFID wands, Bluetooth readers, Amplifiers and all that sort of thing. &lt;br /&gt;&lt;br /&gt;Essentially, the project is about replaying the tales people have about the objects they donate to the store. Its a pretty neat idea. My role has been about the tech; from writing iPhone software to soldering up readers in the back-room!&lt;br /&gt;&lt;br /&gt;Emma, the Oxfam store manager has been really cool in putting up with me and my soldering iron. So far things are looking good and I hope to get some good coverage of the event up here.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Jasager Mobile Tarpit</title>
   <link href="http://lab.section9.co.uk/2010/05/10/jasager-mobile-tarpit.html"/>
   <updated>2010-05-10T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/05/10/jasager-mobile-tarpit</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;object width=&quot;400&quot; height=&quot;225&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=11630656&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=11630656&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;400&quot; height=&quot;225&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;I thought I'd post my findings on the Jasager mobile tarpit. Word is, it kinda works but the bandwidth is a little limiting. The general deal is that Jasager is great but you really need some kind of connection to get any sort of man-in-the-middle action and thats a shame...unless you already have some shiny GPRS goodness! That does kinda work well. &lt;br /&gt;&lt;br /&gt;There are a few caveats though. Forwarding http requires a SOCKS proxy daemon process of some kind. Transocks is good and proxychains is better but what if you want to do DNS as well? Write a wrapper around the proxyresolv script and foward DNS traffic to it and you are in. Its awkward but it does work!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>The Teensy</title>
   <link href="http://lab.section9.co.uk/2010/05/09/the-teensy.html"/>
   <updated>2010-05-09T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/05/09/the-teensy</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/S-cY6_0hdCI/AAAAAAAAApM/iD9-g707RE0/s1600/features.gif&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 104px;&quot; src=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/S-cY6_0hdCI/AAAAAAAAApM/iD9-g707RE0/s320/features.gif&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5469367674307965986&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I haven't posted many security bits and bobs of late but I thought I'd play around with &lt;a href=&quot;http://www.pjrc.com/teensy/&quot;&gt;the Teensy&lt;/a&gt;. For these who havent heard of this, its a small little board that is similar to an Arduino but actually registers itself as a Human Interface Device. Basically, you can use it to emulate a keyboard that &lt;span style=&quot;font-style:italic;&quot;&gt;types itself very fast&lt;/span&gt;. You don't need to be a security guru to see the fun you can have.&lt;br /&gt;&lt;br /&gt;I decided to follow &lt;a href=&quot;http://www.irongeek.com/i.php?page=security/programmable-hid-usb-keystroke-dongle&quot;&gt;Iron Geek's setup&lt;/a&gt; and go for the ugly, dip switch, shrink-sleeved version as the black kinda looks evil and cool, plus wiring it up was quite easy. You obviously can't program this thing in exactly the same way as an Arduino but the software is quite good and the form factor of this little thing is really cool!&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S-cZqb_Ja2I/AAAAAAAAApU/180WSQiQ1dE/s1600/IMG_0020.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;&quot; src=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S-cZqb_Ja2I/AAAAAAAAApU/180WSQiQ1dE/s320/IMG_0020.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5469368489322572642&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Doesn't look like much but basically, its a Teensy board ($18) with a USB attachment, an IC Socket and a dipswitch. Pretty straight forward. Using the switches we can get a good range of different programs. I didnt bother with the LED just yet. Figured I'd start simple and see where it goes.&lt;br /&gt;&lt;br /&gt;There is a whole community around this, started by Hak5 and you can &lt;a href=&quot;http://www.hak5.org/forums/index.php?s=761271293b4d117e0e5eda4db79db302&amp;showforum=56&quot;&gt;check it out over on their forums&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>BBC Broadcasting House</title>
   <link href="http://lab.section9.co.uk/2010/05/04/bbc-broadcasting-house.html"/>
   <updated>2010-05-04T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/05/04/bbc-broadcasting-house</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S-BGp94OF7I/AAAAAAAAApE/19ZqEiTHhTE/s1600/P1020700.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 320px;&quot; src=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S-BGp94OF7I/AAAAAAAAApE/19ZqEiTHhTE/s320/P1020700.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5467447634426730418&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Turns out my design handiwork is up at Broadcasting House. The little plaque (centre, towards bottom) was put together by me. You can now leave your memories or thoughts of Broadcasting house by pointing your phone at the tag.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Showreel 2009-2010 (1)</title>
   <link href="http://lab.section9.co.uk/2010/05/01/showreel-2009-2010-1.html"/>
   <updated>2010-05-01T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/05/01/showreel-2009-2010-1</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;object width=&quot;560&quot; height=&quot;340&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/kT6wjgksbTU&amp;hl=en_US&amp;fs=1&amp;&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/kT6wjgksbTU&amp;hl=en_US&amp;fs=1&amp;&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;560&quot; height=&quot;340&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Finally got around to doing my awesome showreel. It's the first time I've done this but since I've been extremely busy of late, I thought I'd get around to putting all the workI've done in the last 6 months into a short video. Hope you like it!&lt;br /&gt;&lt;br /&gt;The song is &quot;Two Feet on the Ground&quot; by &lt;a href=&quot;http://www.pronobozo.com&quot;&gt;the excellent Pronobozo&lt;/a&gt;. Just bought his latest album, Hackwave and you should too!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>More Photos of London</title>
   <link href="http://lab.section9.co.uk/2010/04/25/more-photos-of-london.html"/>
   <updated>2010-04-25T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/04/25/more-photos-of-london</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;I've added a few more snaps of various London places. Sadly, I can't upload the photos of Cane Hill Hospital as I promised the security guard I wouldn't! Probably for the best. Honor bound and all that. However, &lt;a href=&quot;http://www.flickr.com/photos/section9/&quot;&gt;my Flickr stream&lt;/a&gt; has a few nice snaps there for you. Feedback is always appreciated!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Radio5 Pods and Blogs</title>
   <link href="http://lab.section9.co.uk/2010/04/20/radio5-pods-and-blogs.html"/>
   <updated>2010-04-20T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/04/20/radio5-pods-and-blogs</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;Fame at last? Well maybe just a little. Jemimah Knight was kind enough to let me come on her show, &lt;a href=&quot;http://www.bbc.co.uk/blogs/podsandblogs/&quot;&gt;Pods and Blogs, on BBC Radio5&lt;/a&gt;. Had a lot of fun chatting to her about the project at work, Tales of Things. If you don't want to wait to hear it this evening, &lt;a href=&quot;http://www.bbc.co.uk/blogs/podsandblogs/2010/04/tedx_ratholes_and_tales_of_thi.shtml&quot;&gt;check out the Podcast&lt;/a&gt; where you can download the MP3. I come in towards the end but there's some cool stuff about TED in there too!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Playing with Cinema4D</title>
   <link href="http://lab.section9.co.uk/2010/04/18/playing-with-cinema4d.html"/>
   <updated>2010-04-18T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/04/18/playing-with-cinema4d</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;object width=&quot;400&quot; height=&quot;225&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=11376692&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=11376692&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;400&quot; height=&quot;225&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;I thought I'd redo the Section9 Ident with something a little more impressive. It's taken me quite some time (and still needs improvement) but nevertheless, I'm quite pleased with the result. I've always thought that it was possible to get god results fast with Cinema and I'm no disappointed! A little compositing with After Effects and viola! A new ident for S9. Just need to get a little music in there and I'm all set.&lt;br /&gt;&lt;br /&gt;I based this around the February Edition of 3D World Magazine. The tutorial was pretty good (though missing a few key points I think) and I certainly made plenty of mistakes. Sampling the different cameras and the frames needed in still before hand would have been a good idea and getting the lens effect isn't so easy. Still, job's a good'un!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Tales of Things</title>
   <link href="http://lab.section9.co.uk/2010/04/14/tales-of-things.html"/>
   <updated>2010-04-14T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/04/14/tales-of-things</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;I've been somewhat busy with work of late. I'm involved with the &lt;a href=&quot;http://www.talesofthings.com&quot;&gt;Tales of Things&lt;/a&gt; project which goes live this Friday. It's been a hectic time but I've been involved with lots of different aspects which have been quite good fun.&lt;br /&gt;&lt;br /&gt;We've been playing a lot with &lt;a href=&quot;http://www.djangoproject.com/&quot;&gt;Django&lt;/a&gt; and &lt;a href=&quot;http://nginx.org/&quot;&gt;Nginx&lt;/a&gt; with our shiny new server at &lt;a href=&quot;http://www.casa.ucl.ac.uk&quot;&gt;CASA, UCL&lt;/a&gt;. So far, Django has been pretty good to work with though it's not without its faults here and there. Generally, we are pretty hopeful things will work out well.&lt;br /&gt;&lt;br /&gt;Using QRCodes and RFIDTags to give objects a voice is a difficult but fun problem and there certainly have been quite a few crazy ideas thrown about the office. So be sure to stop by Tales of Things when you get chance.&lt;br /&gt;&lt;br /&gt;One of these off the wall ideas is the use of Audio to convey memories with your iPhone:&lt;br /&gt;&lt;br /&gt;&lt;object width=&quot;420&quot; height=&quot;236&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=10928717&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=10928717&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;420&quot; height=&quot;236&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Screen Space Ambient Occlusion</title>
   <link href="http://lab.section9.co.uk/2010/04/05/screen-space-ambient-occlusion.html"/>
   <updated>2010-04-05T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/04/05/screen-space-ambient-occlusion</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;object width=&quot;420&quot; height=&quot;236&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=10693239&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=10693239&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;420&quot; height=&quot;236&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;I've been looking at lighting and shaders a lot with OpenGL these days. Ambient Occlusion seems like the thing at the moment. In the Crytek engine there was a method called Screen Space Ambient Occlusion. I thought I'd give it a go with a data-set from work. It's a start but theres something not quite right with it yet. Of course it needs to be properly blended with other scenery but I'm convinced something isn't quite right! I'll need to tidy it up but it's a good way to learn more advanced OpenGL. There are about 4 shaders and two separate buffers before it gets to the screen. Mental! &lt;br /&gt;&lt;br /&gt;Posted code up here: &lt;a href=&quot;http://github.com/OniDaito/OpenframeworksSSAO&quot;&gt;http://github.com/OniDaito/OpenframeworksSSAO&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Camden Time Lapse 3D</title>
   <link href="http://lab.section9.co.uk/2010/04/04/camden-time-lapse-3d.html"/>
   <updated>2010-04-04T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2010/04/04/camden-time-lapse-3d</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;object width=&quot;420&quot; height=&quot;236&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=10674862&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=10674862&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;420&quot; height=&quot;236&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Ok so here is something closer to what I was trying to achieve. To be honest though, I don't think it's panned out as well as I'd hoped. The method is not so good for the time spent. Taking 400 photos at full RAW with a tripod for 2 hours....well... the footage was less than ample. Getting a full area time lapse is quite hard so I suspect the easier and more pro method would be to work out your angles and shots before hand. Get say, 3 angles and then work it in in post. Still, I'd love to get some feedback from peeps.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Sneak Peak!</title>
   <link href="http://lab.section9.co.uk/2010/03/26/sneak-peak.html"/>
   <updated>2010-03-26T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/03/26/sneak-peak</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;object width=&quot;420&quot; height=&quot;236&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=10472206&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=10472206&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;420&quot; height=&quot;236&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Ok people, I wasn't going to do this just yet but I thought I'd release a small piece of footage I've been working on. I spent about 2-3 hours on two sittings to get this footage. The first time, tried with HDR but the blending of multiple layers gave a much too subtle effect. Hanging around with a laptop copying off all your images from your D100 to create more space for 600 RAW images is much too much effort wise! :P Still, nevermind. It all panned out ok in the end. I think the result is ok but it's nowhere near done. There is much to much information there and it needs proper cutting and stitching together but hopefully, it'll look mighty fine. I wasn't going to release anything but since I'm getting some followers these days I figured it was time to get regular updates out! :P&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>OpenWRT and Remote Sensors</title>
   <link href="http://lab.section9.co.uk/2010/03/21/openwrt-and-remote-sensors.html"/>
   <updated>2010-03-21T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/03/21/openwrt-and-remote-sensors</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;Normally, I have at least one set of photos or a new project or a video or something every sunday. Despite having a day off work, I've yet to reach any conclusions this week though many projects are in the pipeline. So far, I've been looking quite hard at Aerials and how they work. This is in preparation for more RFID work but also for Wifi-ness. &lt;br /&gt;&lt;br /&gt;I'm in the process of constructing a remote sensor, server station. I've chosen to base this around OpenWRT and an Asus WL-500GP. I know there are other, smaller server setup's these days (Sheevaplug might have been the better option and still may be retrofitted at some stage) but so far, things are looking good. As OpenWRT pretty much runs on anything, we can build Wifi points on the cheap.&lt;br /&gt;&lt;br /&gt;The plan is to make it perpetual using Solar Panels. Mount this on a roof with a webcam and bam, remote sensor station! OpenWRT is a beast to get working properly though but I &lt;em&gt;might&lt;/em&gt; have just cracked it. So far things are running good save the wifi which is intermittent. &lt;br /&gt;&lt;br /&gt;So, aside from the test logo I did for a friend (see the Flickr Stream to the right!), there are no funky pics or vids this week :( But soon, I promise!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>This One is On Us!</title>
   <link href="http://lab.section9.co.uk/2010/03/19/this-one-is-on-us.html"/>
   <updated>2010-03-19T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/03/19/this-one-is-on-us</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;I'm a big NIN fan and Trent Reznor influences my work probably more than any other. With the release of all the material from the Vegas show and the Lights in the sky tour, there have been some great fan works. &lt;a href=&quot;http://thisoneisonus.org/node/2&quot;&gt;This One is On Us&lt;/a&gt; is a great site with DVD sets, artwork and audio downloads. I highly recommend getting the torrents going and downloading this (it's free! You have no excuse). The audio alone makes a great listen and is possibly better than the official NIN Live DVD so get to it people!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>iPhone RFID Reader Update</title>
   <link href="http://lab.section9.co.uk/2010/03/18/iphone-rfid-reader-update.html"/>
   <updated>2010-03-18T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/03/18/iphone-rfid-reader-update</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;Well, it turns out that soldering a resistor between pins 21 and GND will actually sort out the problem. Its one of these things that isn't mentioned on the majority of pages but can be found in some obscure places. Looking at the &lt;a href=&quot;http://www.instructables.com/id/How-To-Connect-a-PS2-Keyboard-to-the-iPhone/&quot;&gt;Rather Excellent iPhone Keyboard Mod&lt;/a&gt; I can confirm that this is the thing to do. With Low frequency RFID this isn't needed fortunately but nevermind. Something to remember for the High Frequency version.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>We made Slashdot!</title>
   <link href="http://lab.section9.co.uk/2010/03/15/we-made-slashdot.html"/>
   <updated>2010-03-15T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/03/15/we-made-slashdot</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;http://hardware.slashdot.org/story/10/03/14/1732235/How-To-Make-Your-Own-iPhone-RFID-Reader?art_pos=5&quot;&gt;This Article on Slashdot&lt;/a&gt; is all about the RFID reader I made. To be honest, the project was not that mega hard or impressive but rather a good exercise in learning about the basics of iPhone hacking and indeed, it will lead to some interesting future applications which is really the point. &lt;br /&gt;&lt;br /&gt;If anyone knows how to get the iPhone to talk BACK over a serial line (rather than just listen) please PLEASE let me know how because so far I've had bugger all luck with this one. It's required in order to get the MiFARE stuff to work with standard chips (Being able to read your Oyster card or passport would be much more phun! :D )&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>iPhone RFID Reader</title>
   <link href="http://lab.section9.co.uk/2010/03/13/iphone-rfid-reader.html"/>
   <updated>2010-03-13T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/03/13/iphone-rfid-reader</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;object width=&quot;420&quot; height=&quot;236&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=10133832&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=10133832&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;420&quot; height=&quot;236&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;The idea behind this project is to see what the iPhone's serial is capable of and to try and have a little fun with RFID along the way. This reader works with the low frequency (125Khz) tags but I have a half working version for MiFARE Hi-Frequency as well.&lt;br /&gt;&lt;br /&gt;For this project you will need:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;An iPhone USB Cable (genuine one is best and probably at least 3!)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A JAILBROKEN iPhone!&lt;/li&gt;&lt;br /&gt;&lt;li&gt;An &lt;a href=&quot;http://www.sparkfun.com/commerce/product_info.php?products_id=8419&quot;&gt;ID-12 RFID Reader&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;An &lt;a href=&quot;http://www.sparkfun.com/commerce/product_info.php?products_id=8423&quot;&gt;ID-12 Breakout Board&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A &lt;a href=&quot;http://www.sparkfun.com/commerce/product_info.php?products_id=8745&quot;&gt;Logic Level Converter&lt;/a&gt;&lt;li&gt;&lt;br /&gt;&lt;li&gt;It's useful to have some IC Sockets for Soldering&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.sparkfun.com/commerce/product_info.php?products_id=9416&quot;&gt;Glass Tags&lt;/a&gt; if you want extra fun or any&lt;br /&gt;125Khz Tags&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If you don't like the idea of taking iPhone Cables apart, use &lt;a href=&quot;http://www.sparkfun.com/commerce/product_info.php?products_id=8295&quot;&gt;an iPhone Breakout Board&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.sparkfun.com/commerce/product_info.php?products_id=8249&quot;&gt;A Battery Pack with a 5V step up&lt;/a&gt;&lt;br /&gt;&lt;li&gt;Wire.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Some kind of switch.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A box to put it all in.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;I should point out that I don't work for Sparkfun.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S5uZOisQ0MI/AAAAAAAAAoA/NwIthN0PcYY/s1600-h/IMG_0194.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 317px;&quot; src=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S5uZOisQ0MI/AAAAAAAAAoA/NwIthN0PcYY/s320/IMG_0194.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5448116649344422082&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The first stage is the wiring of the ID-12. You should attach it to the breakout board then attach a series of IC Sockets to the board so you can easily add and remove your wires later on. Wiring up the ID-12 is quite easy. This particular unit does need to be set to ASCII  output however. To do this you need to solder:&lt;br /&gt;&lt;ul&gt;  &lt;br /&gt;&lt;li&gt;A Red wire from 5V (11) to /RST (2)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A Black wire from FS (7) to GND (1)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;This sets up the ID-12 into ASCII mode. From here we need simply need to solder in the Ground, 5V power and TX Lines &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;VCC to 5V (Pin 11)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;GND to GND (Pin 1)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;RX-I to D0 (Pin 9)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/S5uZOEhsNeI/AAAAAAAAAn4/VBBipUYHjw4/s1600-h/IMG_0193.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 315px; height: 320px;&quot; src=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/S5uZOEhsNeI/AAAAAAAAAn4/VBBipUYHjw4/s320/IMG_0193.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5448116641247016418&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If this is confusing, there is an excellent write-up &lt;a href=&quot;http://www.instructables.com/id/Weather-proof-Bluetooth-capable-RFID-reader/&quot;&gt;Here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The next step is to wire up the Logic Level Convertor. This is needed because the iPhone works at TTL3.3V whereas the ID12 runs at TTL5V. We need  to step up and down. This little board is quite easy to use. The Schematic and Instructions can be found &lt;a href=&quot;http://www.sparkfun.com/datasheets/BreakoutBoards/Level-Converter-v10.pdf&quot;&gt;in this PDF&lt;/a&gt;. The key is to Solder the ID12's 5V, GRND and signal lines to the first channel on the High Voltage Side of the Board. &lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/S5uZN4lZ3nI/AAAAAAAAAnw/XEEzpWJfgcA/s1600-h/IMG_0192.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 307px;&quot; src=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/S5uZN4lZ3nI/AAAAAAAAAnw/XEEzpWJfgcA/s320/IMG_0192.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5448116638041366130&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;At this point, you can wire in the switch and the battery box into the High Voltage side of the circuit. Wire the positive of the battery into the switch and out of the switch into the logic board and the ID12. Wire the battery's ground wire into the GND of the logic level board and the ID12.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S5uZOyAjYZI/AAAAAAAAAoI/iDgYkTy65Yo/s1600-h/IMG_0195.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 300px;&quot; src=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S5uZOyAjYZI/AAAAAAAAAoI/iDgYkTy65Yo/s320/IMG_0195.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5448116653456056722&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The next step is to work on the iPhone's connection. You should make yourself familiar with the connector. If you use a breakout board, this is quite easy. However, if you are using  an iPhone cable, things are a little trickier. Firstly, you should look at &lt;a href=&quot;http://pinouts.ru/PortableDevices/ipod_pinout.shtml&quot;&gt;Pinout.ru's iPod Guide&lt;/a&gt; that lists the ports we need. We are aiming to use the iPhone's built in serial connection. The pins we need are:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Pin 1 for GND&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Pin 13 for RX&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Pin 18 for 3.3V(+ve)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;We could use pin 12 for TX as well but the ID-12 doesn't need data sent to it and I have had significant problems in sending data FROM the iPhone. If anyone knows why this is so, do let me know. Regardless, the iPhone only needs to receive and this is well because these two pins are very close together.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/S5uhRnr66CI/AAAAAAAAAoY/_WuR7bLHYj8/s1600-h/IMG_0199.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 211px;&quot; src=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/S5uhRnr66CI/AAAAAAAAAoY/_WuR7bLHYj8/s320/IMG_0199.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5448125498317793314&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;First, either solder your wires into the breakout board or open up the iPhone cable. To open a genuine iPhone cable, you need to run a thin blade around the inside of the plastic case.  A small amount of force should release the clips on either side and then pulling on the metal plug with a pair of pliers should do the job. Be careful at this stage though as its  VERY HANDY TO KEEP THE PLUG INTACT. &lt;br /&gt;&lt;br /&gt;Taking apart the plug should reveal 4 cables. A genuine iPhone cable will have a sheath and small gold connectors. Cheaper cables will be glued in place and this can wreak the project. You dont want glue inside the unused sockets and the less force you need to remove the cables, the better.&lt;br /&gt;&lt;br /&gt;Removing the small plugs requires a lot of force and yet, you MUST be as delicate as possible. The connectors are attached to the wires with a very small amount of solder. If the connectors snap they cannot be used and if the solder snaps, you will need to solder them again and if you use too much, the plugs will not fit back into their sockets. Also, you are limited on how many times you can place the plugs as the sockets will wear out. I personally went through 5 cables with this method; two of them were genuine. The geunine ones wear much less.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/S5uhR6vCU3I/AAAAAAAAAog/X_yiQNPtu_o/s1600-h/IMG_0200.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 256px; height: 320px;&quot; src=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/S5uhR6vCU3I/AAAAAAAAAog/X_yiQNPtu_o/s320/IMG_0200.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5448125503431136114&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Place the black wire into the ground. You can decide which colour goes into which socket. I chose green for Pin12, white for Pin13 and Red for Pin18. Remember which is which!&lt;br /&gt;&lt;br /&gt;The next step is to wire the cable into the LOW level side of the Logic level board. Again, you need only solder the Live, RX and GND but you may do the TX as well. The iPhone should be receiving from the TX-O pin on the board whereas the ID-12 is sending to the TX-I on the board. It can be useful to practice this on a breadboard first to make sure you get it right.&lt;br /&gt;&lt;br /&gt;Once this is all soldered together, you can place it all in a box and begin testing. I used a custom built FTDI USB TTL adaptor and read the the values being sent with my laptop.&lt;br /&gt;&lt;br /&gt;The next step is to design the software. Jailbroken software is really another topic all together but there are some interesting choices. In the main, I followed the advice given on &lt;a href=&quot;http://hcgilje.wordpress.com/2010/02/15/iphone-serial-communication/&quot;&gt;This Page&lt;/a&gt; which talks about &lt;a href=&quot;http://www.openframeworks.cc/&quot;&gt;OpenFrameworks&lt;/a&gt; and iPhone Serial. As I'm a big fan of OpenFrameworks, I chose this approach. However, I didn't use the serial class mentioned in this blog.&lt;br /&gt;&lt;br /&gt;I had previously written some standard C++ to open serial ports for the ID-12 specifically and use it. As this worked, I decided simply to transplant it into a simple OF example. Compiling OpenFrameworks for the iPhone requires signing in order to run on a jailbroken device. There is a small program called &lt;a href=&quot;http://www.saurik.com/id/8&quot;&gt;LDID&lt;/a&gt; by Saurik who is the definitive source for all iPhone development.&lt;br /&gt;&lt;br /&gt;To generate a working program you need to:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Download the code from &lt;a href=&quot;http://github.com/OniDaito/iPhoneRFID&quot;&gt;GitHub&lt;/a&gt;&lt;li&gt;&lt;br /&gt;&lt;li&gt;Open the project in Xcode.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Compile the code using your own signature fake signature or simnply don't sign at all&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Using SSH/SCP, copy the executable .app to /private/var/stash/applications&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Download LDID in Cydia&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Use ldid on a terminal app to sign your app.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;In short, build with Xcode and use a fake signature as written on Saurik's site.&lt;br /&gt;&lt;br /&gt;Serial Communication on the iPhone has been covered very well on &lt;a href=&quot;http://devdot.wikispaces.com/Iphone+Serial+Port+Tutorial&quot;&gt;DevDots&lt;/a&gt; page. The basic C/C++ code there&lt;br /&gt;works quite well for testing if you comment out the sending code.&lt;br /&gt;&lt;br /&gt;So now you have the ability to read RFID Tags. But you need some tags to read. For me, I quite like the idea of home automation and similar. There was an odd trend of implanting glass RFID tags into the flesh near your thumb but why bother with that when you can simply make an RFID earring? That way, you can remove it if need be or swap out the actual tag.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/S5uZV3xK4jI/AAAAAAAAAoQ/Z5Be4iI0x4s/s1600-h/IMG_0196.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 304px; height: 320px;&quot; src=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/S5uZV3xK4jI/AAAAAAAAAoQ/Z5Be4iI0x4s/s320/IMG_0196.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5448116775261233714&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S5uZNwVPgyI/AAAAAAAAAno/GvzTy-02ZS8/s1600-h/earing-in.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 263px; height: 320px;&quot; src=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S5uZNwVPgyI/AAAAAAAAAno/GvzTy-02ZS8/s320/earing-in.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5448116635826094882&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Tower Bridge Panorama in Maya</title>
   <link href="http://lab.section9.co.uk/2010/03/07/tower-bridge-panorama-in-maya.html"/>
   <updated>2010-03-07T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/03/07/tower-bridge-panorama-in-maya</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;object width=&quot;420&quot; height=&quot;236&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=9976433&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=9976433&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;420&quot; height=&quot;236&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Thought I'd have a go with Maya this weekend and update some of my Panoramas. Since the Quicktime player isn't everyone's cup of tea (though I'm told there are some cool Flash ones!) I figured it was time to get busy with Maya and create some videos. Generally, the idea is to create a sphere, texture map it, then create a path for a camera object. Once that's done, you export all the JPG shots using Maya hardware and combine them back using something like Quicktime Pro (mencoder didn't work so well sadly). The result is what you see here. Not bad for a first attempt though I suspect my trusty D100 needs a clean. &lt;br /&gt;&lt;br /&gt;Maya is a bit of a pain in the arse to use on a Mac I've noticed &lt;a href=&quot;http://www.blender.org/development/release-logs/blender-250/&quot;&gt;but the new Blender&lt;/a&gt; is looking mighty fine and I'm thinking thats the way forward as it seems they've ditched their utterly pants UI. Good job guys!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>NIN 'Only' Tribute</title>
   <link href="http://lab.section9.co.uk/2010/02/28/nin-only-tribute.html"/>
   <updated>2010-02-28T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/02/28/nin-only-tribute</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;object width=&quot;420&quot; height=&quot;236&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=9788437&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=9788437&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;420&quot; height=&quot;236&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;The best band in the world? For me, certainly. Trent Reznor has had a massive influence on me and the work that I do and it was high time that I got around to making this little experiment. I wanted to work on my shader, graphics and OpenCV computer vision skills and what better way than to try to recreate the NIN Video 'Only'.&lt;br /&gt;&lt;br /&gt;The idea is to create a depth map from the brightness of the pixels taken from the camera and then to map these depths to a pin board in real-time. I'd chosen OpenFrameworks as the basis for this as it runs in C++ and contains all the libraries required. To begin with though, I created a couple of tests in both Pyglet and PyGame; two Python libraries that allowed loading of GLSL Shaders and models.&lt;br /&gt;&lt;br /&gt;Modelling a pin was quite easy using the free tool, Blender. Although Blender's interface is very hard to learn, the program is fully featured and getting a good object was quite easy. Sadly, however, the OBJ format for 3D objects isn't very robust and doesn't translate well over applications. So, in order to sort this out I settled for 3DS format and managed to find a very good library for OpenFrameworks apps. &lt;br /&gt;&lt;br /&gt;Secondly, I need to get hold of some base code to load GLSL Shaders in OpenFrameworks Apps. Fortunately, there exists such a wrapper. Creating a basic Phong Shader is quite easy and with that, the shiny pins could be drawn.&lt;br /&gt;&lt;br /&gt;OpenCV has long been a staple of the OF community, so linking that in and processing the video was not hard. Experimenting to get the best results was the trickiest bit of the whole project and I think, there could still be some work to do. Basically, we create a greyscale image, contour it with some threshold value and then create a set of blobs. We then use the original pixel values from the camera with some added background learning algorithm to reduce the background noise. I used a sheet of black material behind me so that I culd get rid of even more noise and the results turned out to be quite good.&lt;br /&gt;&lt;br /&gt;Finally, I tried adding some shadows. This was trickier than I thought. OpenGL under OF has some issues, the first being the rather weird scaling factor. The light is several thousand world units away from the scene which means that the accuracy of the Shadow Mapping algorithm is not so good. Also, it appears that anything outside the frustum is classed as 'in-shadow' naturally enough. Using a variant of GL_CLAMP with a white texture border and a blend mode of multiply, managed to alleviate this problem; anything outside the shadow map gets blending with a white texture and therefore is not affected but there still appears to be one or two artefacts here and there.&lt;br /&gt;&lt;br /&gt;Nontheless, overall I am quite pleased with the result and there will certainly be more to come!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>FTIR Table Progress Part 2</title>
   <link href="http://lab.section9.co.uk/2010/02/06/ftir-table-progress-part-2.html"/>
   <updated>2010-02-06T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/02/06/ftir-table-progress-part-2</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S22Bdme2VGI/AAAAAAAAAms/eoMu7wb4dKU/s1600-h/IMG_0175.JPG&quot;&gt;&lt;img style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 240px; height: 320px;&quot; src=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S22Bdme2VGI/AAAAAAAAAms/eoMu7wb4dKU/s320/IMG_0175.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5435142670852183138&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;During the Xmas holidays, I began construction on the cabinet with my Dad and had a lot of fun doing it. I left it in his capable hands for painting, sanding, and the installation of the interior frame and handles. Here is the result. Looks rather awesome. The height is important as one needs to make sure the camera can see the entire top of the box. Also, there needs to be space for the various electronics that will be installed in the bottom along with a 4 Gang. the height is also just about right for the table to be used standing. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S22Bk9alt6I/AAAAAAAAAm0/xDnz9qHN59Y/s1600-h/IMG_0169.JPG&quot;&gt;&lt;img style=&quot;float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 240px; height: 320px;&quot; src=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S22Bk9alt6I/AAAAAAAAAm0/xDnz9qHN59Y/s320/IMG_0169.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5435142797267416994&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is the EyeToy. I used the PS3 eyetoy as it came recommended by the guys on the &lt;a href=&quot;http://www.nuigroup.com/&quot;&gt;NUIGroup Forums&lt;/a&gt;. It runs at 640x480 at 30fps, has two aperture settings and space for a filter. There is a problem with removing the infrared filter. Most cameras have one and you need to remove it. On my cheap logitech this was easy because it was simply a piece of plastic that fell out. With the Eyetoy, it's a piece of ground glass, set into the plastic. You need to gouge it out and be careful with it too as the lens is right behind it! &lt;a href=&quot;http://www.youtube.com/watch?v=7jJfuP7YgPA&quot;&gt;There is a good video here&lt;/a&gt; on how to do this. &lt;br /&gt;&lt;br /&gt;You need to get a filter that matches your LEDs. In my case, I bought a small 880nm filter from eBay. I can't remember the guys name but if you search on eBay you'll find a guy in the states who sells these small, round filters for this exact purpose. It works really well. Once you've put that in, you are ready to go.&lt;br /&gt;&lt;br /&gt;The PS3 sits on top of the light that came with the LCD panel. Since this light was obviously right next to the LCD itself, you need to extend the cables that come from this light using solder and some extra wire. It is important that when you take apart the panel, you remember which plug goes where. Take photos at every stage!&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/S22BxV-w7kI/AAAAAAAAAm8/bdh0VUzaBVg/s1600-h/IMG_0170.JPG&quot;&gt;&lt;img style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;&quot; src=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/S22BxV-w7kI/AAAAAAAAAm8/bdh0VUzaBVg/s320/IMG_0170.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5435143010020027970&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here are the innards of the LCD Panel. Some of the wires needed extending also as they tend to be jam packed inside the original Dell Case. They are mounted on some wood except for the light's power supply which I have yet to attach. The more recessed you can make these the better as they will show up on the screen if you don't which makes the effect a bit naff. &lt;br /&gt;&lt;br /&gt;On the left, you can see the wires that go up to the LED arrays. You need to link these to an adaptor. Check out old mobile phone chargers as they are dead handy for this sort of thing. For my circuit, I needed a 5V supply capable of around 1.5 amps. I managed to find a charger that did 5V and up to 2 Amps which turned out to be perfect.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/S22B4wqXG8I/AAAAAAAAAnE/AVw2vElfBJo/s1600-h/IMG_0171.JPG&quot;&gt;&lt;img style=&quot;float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 320px; height: 240px;&quot; src=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/S22B4wqXG8I/AAAAAAAAAnE/AVw2vElfBJo/s320/IMG_0171.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5435143137441291202&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This photo shows the annoying, overlapping PCBs that fall on both sides of this LCD screen. This means that about an inch from two sides of the LCD panel are obscured which is very annoying. The only thing stopping this from being fixed is the current configuration of the box and the small L shaped plastic track that links the two PCBs together. If I could get a longer, flat plastic cable I'd be in business. At the moment, it doesn't affect things to much to be fair but it makes calibration with the NUIGroup tool impossible at present. I'll aim to sort it manually.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/S22CBxhOkjI/AAAAAAAAAnM/0b9QUFudpTM/s1600-h/IMG_0172.JPG&quot;&gt;&lt;img style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;&quot; src=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/S22CBxhOkjI/AAAAAAAAAnM/0b9QUFudpTM/s320/IMG_0172.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5435143292290241074&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is the top of the table with the lid attached. Looks good no? The plastic came from a place called &lt;a href=&quot;http://www.theplasticpeople.co.uk/&quot;&gt;Barkstons in Leeds&lt;/a&gt;. You need to go to their &quot;plastic people&quot; / yellow site as they will do decent perspex cut to any size you like for a decent price, delivered. Make sure you go for at least 8mm (I used 8mm) and have the edges polished. At first I was unsure whether or not this would make a decent wave guide but it appears that it does.&lt;br /&gt;&lt;br /&gt;Lots of people talk about Endlighten and other fancy perspex, or a compliant surface made of silicon. I've had no problems with this cheap stuff and ordered two pieces in case one was damaged. Its still all good.&lt;br /&gt;&lt;br /&gt;PS. Ignore the thing on the top left of the photo! :D&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/S22CIS4WVyI/AAAAAAAAAnU/MMdbq3-V0Qw/s1600-h/IMG_0173.JPG&quot;&gt;&lt;img style=&quot;float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 320px; height: 240px;&quot; src=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/S22CIS4WVyI/AAAAAAAAAnU/MMdbq3-V0Qw/s320/IMG_0173.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5435143404324804386&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;With the lid off, you can see the LED arrays. They are arranged on the aluminium frames and connected together. The circuit was designed with the help of &lt;a href=&quot;http://ledcalc.com/&quot;&gt;this handy calculator&lt;/a&gt;. Some people link the whole thing up in parallel; indeed, I did this for the first mini table. The problem with that is that it uses a lot of power and needs a heavy resistor. All you need to know is this:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;V = I x R&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Yup, that good old equation. Checking the RS Data sheet for my LEDs I found that each one requires 100mA and drops 1.5V. That means, with a 5V supply, we can only have a maximum of 3 LEDs in series (1.5 x 3 = 4.5V). Now, to get 100mA over each one we do some maths. V = I x R . Rearrange to get V / I = R . Substitute the numbers: 0.5 / 0.1 = 5 Ohms. What did we do here? Well, we need to go from 5V, down to 0V after going through 3 LEDs. Since each LED drops 1.5, we are left with half a volt to sort out and 100mA of current to send. So 0.5 / 0.1 = 5 Ohms. The closest rated is 5.6 Ohms and you can buy these cheap from either Farnell or RS Components.  &lt;br /&gt;&lt;br /&gt;I managed to get my Mum, who is a much better solderer than me to do this bit! :P Shrink sleeving and everything. A quality job well done.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S22CTMJ85WI/AAAAAAAAAnc/aOrH9b4q5X8/s1600-h/IMG_0174.JPG&quot;&gt;&lt;img style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 240px; height: 320px;&quot; src=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S22CTMJ85WI/AAAAAAAAAnc/aOrH9b4q5X8/s320/IMG_0174.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5435143591498147170&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can get a better view of the internals here. You can see that the LEDs line up quite well with the perspex and that is indeed the trick. With all that done, you need to power it up and grab the software from the NUIGroup and play till your hearts content.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This project was a lot of fun and it still isn't over. There are a few funky things I'd like to add, though I need to do some boring things like putting the shelf in and calibrating the screen but there are many other things in the pipeline.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Total costings:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Bandpass Filter from Ebay: £15.17&lt;br /&gt;54 LEDs from RS: £22.46&lt;br /&gt;Perspex Sheets from Barkston - £31.68&lt;br /&gt;MDF, Aluminium Track, Hinges, Drill-bit, Handles - £23.58&lt;br /&gt;Maplin Wire and Solder - £12&lt;br /&gt;RS Components Resistors - £8&lt;br /&gt;PS3 EyeToy from eBay - £20.51&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Grand Total: £133.40p&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Of course, I had to scrounge the LCD panel and there is no mac mini involved but damn, its cheap! :D&lt;br /&gt;&lt;br /&gt;Overall, it was hard to get solid answers on certain questions like &quot;Is this a good wave guide?&quot;, &quot;Is the infrared leaking?&quot;, &quot;exactly how good is the eyetoy with this?&quot; etc etc. Generally, the best advice is just go for it with the guides and providers I've mentioned and you can't go far wrong. I guess I got lucky with the plastics and the spacings of the LEDs and the filters etc, but generally, it doesn't seem too hard to get a good result. &lt;br /&gt;&lt;br /&gt;But of course, no tutorial would be complete without a proper video showing some funky touch software:&lt;br /&gt;&lt;br /&gt;&lt;object width=&quot;420&quot; height=&quot;236&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=9252405&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=9252405&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;420&quot; height=&quot;236&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Some Resources&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://johannesluderschmidt.de/&quot;&gt;The VIRTTable&lt;/a&gt;. If you look at no other page, you should definitely check this guy out.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.hak5.org/episodes/episode-624&quot;&gt;Hak5 On Multitouch&lt;/a&gt;. A good overview though they don't go into specifics as they are keeping it hush hush for business purposes (which I've just blown I guess! :S)&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://toddvanderlin.com/2008/01/smart-surface/&quot;&gt;Todd Vanderlin's Table&lt;/a&gt; - He doesnt give much away but its a good link&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Decode09 - Recode Entry</title>
   <link href="http://lab.section9.co.uk/2010/02/01/decode09-recode-entry.html"/>
   <updated>2010-02-01T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/02/01/decode09-recode-entry</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;object width=&quot;400&quot; height=&quot;300&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=9129329&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=9129329&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;400&quot; height=&quot;300&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href=&quot;http://vimeo.com/9129329&quot;&gt;Recode : Decode Entry - In the Style of Aha's &quot;Take on Me&quot;&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/user1678273&quot;&gt;Benjamin Blundell&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com&quot;&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Really, there was absolutely no reason for me not to enter this compo. In fact, I've had a few more ideas since. Processing is a good little language to play in and the original code is quite a joy to play with. I figured learning a little about a &quot;Sketch&quot; renderer was a good idea. I must admit, there are some impressive Sketch Shaders out there. I settled for using the NPR Quake one. I hope this makes it onto the Underground. If you are in London and you see this being shown on a projector, let me know!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Anyone into iPhones and Google Maps?</title>
   <link href="http://lab.section9.co.uk/2010/01/27/anyone-into-iphones-and-google-maps.html"/>
   <updated>2010-01-27T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/01/27/anyone-into-iphones-and-google-maps</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;I've created a small application that will read your Google My Maps direct from Google and onto a map on your iPhone. It was a test and a learning curve for Objective-C and iPhone development. I've attempted to get it into the iPhone store but with little success. It works ok for me but there are still some bugs according to Apple. Nonetheless, I think it might be helpful for some people out there so I've uploaded it to Bitbucket. &lt;a href=&quot;http://bitbucket.org/onidaito/iphonemymap/&quot;&gt;You can check it out here&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Web Controlled Securi-Webcam</title>
   <link href="http://lab.section9.co.uk/2010/01/24/web-controlled-securi-webcam.html"/>
   <updated>2010-01-24T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/01/24/web-controlled-securi-webcam</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;object width=&quot;400&quot; height=&quot;300&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=8938652&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=8938652&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;400&quot; height=&quot;300&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href=&quot;http://vimeo.com/8938652&quot;&gt;Web controlled, 2 Axis Camera&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/user1678273&quot;&gt;Benjamin Blundell&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com&quot;&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;It's taken a while but finally, my little webcam project is done. It was quite a long process and I learnt a lot about streaming media. At the moment, a Java applet is listening to a stream being sent via a small daemon process called webcam-server on my Ubuntu box. In order to control the servos a totally different line of processing occurs with Python and mod_wsgi. Both the servo controls and applet run on top of Apache2 with some HTTPS support to keep undesirables out. Fun times indeed!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>More Power!</title>
   <link href="http://lab.section9.co.uk/2010/01/23/more-power.html"/>
   <updated>2010-01-23T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/01/23/more-power</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;Yes indeed, more power. But power does indeed corrupt! Or rather, it makes you lazy! :P Still, I had a lot of fun generating some more renders of London. The dataset is massive and exporting to Sunflow took a long time in places. Still, it was an interesting experiment if nothing else.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/S1tLUFbn5uI/AAAAAAAAAl0/bpPa1v6p89k/s1600-h/london1.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 273px;&quot; src=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/S1tLUFbn5uI/AAAAAAAAAl0/bpPa1v6p89k/s320/london1.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5430016584152770274&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Similar to the first one I posted. Unlike the previous, this was done on an I7. 231160 primitives and 22 minutes of Render time &lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/S1tLi0b1fpI/AAAAAAAAAl8/1D5C-hEl3k0/s1600-h/london2.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 160px;&quot; src=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/S1tLi0b1fpI/AAAAAAAAAl8/1D5C-hEl3k0/s320/london2.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5430016837288296082&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Yes, I trimmed off a few too many tiles here which is a shame. Still, its a nice result. 704279 primitives and 1 and a half hours render time on an I7 processor.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S1tL_CRmcPI/AAAAAAAAAmE/4uaeBFjV4ns/s1600-h/london3.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;&quot; src=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S1tL_CRmcPI/AAAAAAAAAmE/4uaeBFjV4ns/s320/london3.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5430017322039800050&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;53 Tiles were used for the generation of this image. 3052642 primitives were involved. The Render took just shy of 4 hours although the export to Sunflow format from Max took almost as long. TBH, I could have gotten away with a lot less.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Sunflow over London</title>
   <link href="http://lab.section9.co.uk/2010/01/17/sunflow-over-london.html"/>
   <updated>2010-01-17T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/01/17/sunflow-over-london</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;I have been entrusted with a copy of London in 3DS Max form. I wondered about rendering this beast using Sunflow over Amazon's computing service. But first, it seemed a good idea to actually try using my little PC that sits near my desk. Here is the result so far:&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/S1NJMCWHLoI/AAAAAAAAAkI/kNAUt00JmYs/s1600-h/london1.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;&quot; src=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/S1NJMCWHLoI/AAAAAAAAAkI/kNAUt00JmYs/s320/london1.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5427762447048453762&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The stats of my machine:&lt;br /&gt;&lt;br /&gt;Intel Pentium 4 2.8GHz&lt;br /&gt;2 GB Memory&lt;br /&gt;&lt;br /&gt;And here is the output of the Sunflow Renderer:&lt;br /&gt;&lt;br /&gt;SCENE  info  : Scene stats:&lt;br /&gt;SCENE  info  :   * Infinite instances:  0&lt;br /&gt;SCENE  info  :   * Instances:           3&lt;br /&gt;SCENE  info  :   * Primitives:          117153&lt;br /&gt;SCENE  info  :   * Instance accel:      auto&lt;br /&gt;SCENE  info  :   * Scene bounds:        (527986.00, 178037.75, 0.00) to (533716.00, 183020.25, 80.51)&lt;br /&gt;SCENE  info  :   * Scene center:        (530851.00, 180529.00, 40.26)&lt;br /&gt;SCENE  info  :   * Scene diameter:      7593.73&lt;br /&gt;SCENE  info  :   * Lightmap bake:       off&lt;br /&gt;LIGHT  info  : Light Server stats:&lt;br /&gt;LIGHT  info  :   * Light sources found: 1&lt;br /&gt;LIGHT  info  :   * Light samples:       1&lt;br /&gt;LIGHT  info  :   * Max raytrace depth:&lt;br /&gt;LIGHT  info  :       - Diffuse          3&lt;br /&gt;LIGHT  info  :       - Reflection       2&lt;br /&gt;LIGHT  info  :       - Refraction       2&lt;br /&gt;LIGHT  info  :   * GI engine            ambocc&lt;br /&gt;LIGHT  info  :   * Caustics:            none&lt;br /&gt;LIGHT  info  :   * Shader override:     false&lt;br /&gt;LIGHT  info  :   * Photon override:     false&lt;br /&gt;LIGHT  info  :   * Shading cache:       off&lt;br /&gt;LIGHT  info  :   * Build time:          0ms&lt;br /&gt;SCENE  info  : Rendering ...&lt;br /&gt;BCKT   info  : Bucket renderer settings:&lt;br /&gt;BCKT   info  :   * Resolution:         640x480&lt;br /&gt;BCKT   info  :   * Bucket size:        32&lt;br /&gt;BCKT   info  :   * Number of buckets:  20x15&lt;br /&gt;BCKT   info  :   * Anti-aliasing:      16 samples -&gt; 256 samples (adaptive)&lt;br /&gt;BCKT   info  :   * Rays per sample:    4&lt;br /&gt;BCKT   info  :   * Subpixel jitter:    off&lt;br /&gt;BCKT   info  :   * Contrast threshold: 0.10&lt;br /&gt;BCKT   info  :   * Filter type:        gaussian&lt;br /&gt;BCKT   info  :   * Filter size:        3.00 pixels&lt;br /&gt;BCKT   info  : Render time: 2:20:18.2&lt;br /&gt;SCENE  info  : Done.&lt;br /&gt;&lt;br /&gt;So not too bad then but certainly quite heavy going for my poor lil processor. The previous machine I had was Dual Core one but it didn't have PCIe on board which sucked. Still, I may upgrade one day! :P I've been pro mac for ages. Will need to attempt the distributed solution soon!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Work in Progress - NIN Tribute</title>
   <link href="http://lab.section9.co.uk/2010/01/16/work-in-progress-nin-tribute.html"/>
   <updated>2010-01-16T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/01/16/work-in-progress-nin-tribute</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;Something to whet you appetite for all things OpenGL&lt;br /&gt;&lt;br /&gt;&lt;object width=&quot;400&quot; height=&quot;300&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=8770840&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=8770840&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;400&quot; height=&quot;300&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href=&quot;http://vimeo.com/8770840&quot;&gt;NIN Tribute Test&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/user1678273&quot;&gt;Benjamin Blundell&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com&quot;&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Tower Bridge Panoramas</title>
   <link href="http://lab.section9.co.uk/2010/01/16/tower-bridge-panoramas.html"/>
   <updated>2010-01-16T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/01/16/tower-bridge-panoramas</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;Last weekend, I mentioned some shots of Tower Bridge. I've finally got a couple uploaded. They are quite different. The first is taken from St Katherine's Docks which is a fairly cool place to be. It is only about 3Meg in size though there are blemishes here and there but for an overall result, it's not too bad. &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.section9.co.uk/panorama1.html&quot;&gt;You can view the first one here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The second was much more ambitious. I decided to stand right in the middle of Tower Bridge and take a full panorama as a HDR image. This one weighs in at a hefty 23Meg and is a beast to download but nontheless, is pretty darn cool!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.section9.co.uk/panorama2.html&quot;&gt;You can view the first one here&lt;/a&gt;, so long as you have a fast connection!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>New HDR Panoramas</title>
   <link href="http://lab.section9.co.uk/2010/01/10/new-hdr-panoramas.html"/>
   <updated>2010-01-10T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/01/10/new-hdr-panoramas</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;I've had a bit more of a play with the 10.5mm lens and the panoramic head that work has very kindly loaned me. After freezing my ass off for almost and hour I managed to get some shots I'm quite proud of. Sadly, I can't quite embed the Quicktime MOVs into amny particular page very easily. When I find a proper Panorama site or a good place to upload on my site, I shall do so as they are much better viewed in the correct viewer. However, &lt;a href=&quot;http://www.flickr.com/photos/section9/&quot;&gt;check out the statue shots on my Flickr Page.&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>FTIR Table Progress</title>
   <link href="http://lab.section9.co.uk/2010/01/04/ftir-table-progress.html"/>
   <updated>2010-01-04T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/01/04/ftir-table-progress</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;Over the Xmas holidays, I decided to make a start on the FTIR Table I've been talking about. Since playing with the prototype, I've made some progress towards a fully working table with the help of various family members and guys from the NUIGroup forums.&lt;br /&gt;&lt;br /&gt;The general idea is to build a pedestal with a top layer formed from an LCD panel, a layer of perspex and potentially, a compliant layer over the top. Inside the pedestal there will be a strong light to illuminate the LCD and a camera to detect infrared. Around the rim of the perspex, there will be a strip of infrared LEDs projecting into the perspex. The idea is to use computer vision techniques to detect touches and gestures.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/S0G6txQ_c7I/AAAAAAAAAjE/EQivbs-B86g/s1600-h/DSC_0002.JPG&quot;&gt;&lt;img style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 212px;&quot; src=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/S0G6txQ_c7I/AAAAAAAAAjE/EQivbs-B86g/s320/DSC_0002.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5422820721812272050&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The first thing to do was to dismantle the LCD. This proved quite tricky as I had chosen a particular Dell LCD that I had lying around. Dell do make good screens and this one had a few problems. In the first image you can see that the back of the screen has 3 boards. One is the power, one is the controller and the other is the power for the light. Originally, we had the idea to keep all of these mounted on the metal bracket in order to save messing around. Sadly, to save space, Dell have used rather short cables between these boards; the most limiting being the major blue ribbon cable at the bottom, connecting the LCD itself to the controller.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/S0G7O7fakYI/AAAAAAAAAjM/mtJHqj4-Fcs/s1600-h/DSC_0004.JPG&quot;&gt;&lt;img style=&quot;float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 320px; height: 212px;&quot; src=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/S0G7O7fakYI/AAAAAAAAAjM/mtJHqj4-Fcs/s320/DSC_0004.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5422821291492807042&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The power connectors were quite simple to detach and didn't really cause any problems. There were 4 in total. Later, when we took all the boards apart, I decided not to relink the light board to see how the LCD looked with no backlight. Oddly enough, it still worked and one could just about make out the picture, so good news there.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S0G7uwkxqsI/AAAAAAAAAjU/nZxTpRSjL5o/s1600-h/DSC_0006.JPG&quot;&gt;&lt;img style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 212px;&quot; src=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S0G7uwkxqsI/AAAAAAAAAjU/nZxTpRSjL5o/s320/DSC_0006.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5422821838318316226&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The LCD panel itself however is a different matter altogether. There are some nasty ribbon cables and plastic connectors along with a rather annoying metal sticker over the vertical connectors. This panel has both vertical and horizontal connectors which makes the job of dis-assembly even more tricky. The horizontal bar has a sticker over the top which requires care to remove.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/S0G9oVSVD_I/AAAAAAAAAjc/RssGU82pLWo/s1600-h/DSC_0008.JPG&quot;&gt;&lt;img style=&quot;float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 320px; height: 212px;&quot; src=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/S0G9oVSVD_I/AAAAAAAAAjc/RssGU82pLWo/s320/DSC_0008.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5422823926937227250&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The most annoying feature of the monitor is the small, L-Shaped cable shown on the diagram. Because of this cable, the two controller boards attached to the LCD panel cannot hang down from the LCD (I.e rest at 90 degrees to the LCD Panel). This is necessary when using a backlight that is some distance from the panel. This means that until that cable is replaced, there will be a shadow on the LCD where the boards are attached.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S0G-au6-9mI/AAAAAAAAAjk/lyjQBxdsP6o/s1600-h/DSC_0009.JPG&quot;&gt;&lt;img style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 212px;&quot; src=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S0G-au6-9mI/AAAAAAAAAjk/lyjQBxdsP6o/s320/DSC_0009.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5422824792812090978&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The lower half of the LCD panel has 3 layers: a Fresnel, a diffuser and the light itself. This is all mounted inside a simple plastic frame. It should be noted that a similar plastic frame holds the other side of the panel (the section containing the LCD and the controller boards). It is important to keep these panels as they can be used to &quot;offer-up&quot; the other materials without ruining the sophisticated electronics. Also, the actual frames can be kept to remount the electronics easily.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/S0HA96jS-jI/AAAAAAAAAjs/N0F9marLg2I/s1600-h/DSC_0017.jpg&quot;&gt;&lt;img style=&quot;float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 198px; height: 320px;&quot; src=&quot;http://1.bp.blogspot.com/_WNXP2eEZSdg/S0HA96jS-jI/AAAAAAAAAjs/N0F9marLg2I/s320/DSC_0017.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5422827596252641842&quot; /&gt;&lt;/a&gt;&lt;br /&gt;On to the actual box. The construction is from 15mm MDF bought from a place called Bury's in Leyland. The supplies are quite cheap and cut to size. Space is provided for a small PC towards the bottom. The design is limited by the power of the camera being used (most likely a PS3 Eyetoy); the height of the box must be sufficient enough to allow the camera to &quot;see&quot; the entire top of the box. The standard field of view equation for optics can be used here. The box is actually taller than it needs to be so that users can touch the box whilst standing up, making it useful for public spaces. Doors and vents will be added later. The critical area of the box is inside the top section, where there is a shelf with a hole cut in the centre. The shelf is designed to support the plastic frame that houses the LCD, without blocking the LCD itself. Within the shelf there will be further supports for the LED rails and perspex sheet.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/S0HBvhVYQhI/AAAAAAAAAj0/ZGlmhgX_W4Q/s1600-h/DSC_0047.jpg&quot;&gt;&lt;img style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 213px;&quot; src=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/S0HBvhVYQhI/AAAAAAAAAj0/ZGlmhgX_W4Q/s320/DSC_0047.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5422828448476840466&quot; /&gt;&lt;/a&gt; &lt;br /&gt;Possibly the trickiest bit of the entire project is the FTIR section itself. 4 rails of LEDs are required, linked together to a power supply and presented up to the perspex in order to create the FTIR effect. The LEDs in question are 880nm Infrared LEDs from RS components. 54 in total are used on this project. To mount these consistently, 15mm Aluminum track is drilled, using a pillar drill, with 5mm holes at 25mm spacings to accommodate the LEDs. The track has enough space for wiring. The wiring schematic uses 1 resistor per 3 LEDs and wires these groups in parallel. This draws less current through each resistor than wiring the entire track in parallel.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S0HCsYOLsdI/AAAAAAAAAj8/1GMv1_I_igU/s1600-h/DSC_0046.jpg&quot;&gt;&lt;img style=&quot;float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 320px; height: 213px;&quot; src=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/S0HCsYOLsdI/AAAAAAAAAj8/1GMv1_I_igU/s320/DSC_0046.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5422829494002758098&quot; /&gt;&lt;/a&gt;&lt;br /&gt;The perspex is 8mm thick. As shown in the image, the LEDs are almost central to the perspex when placed next to it. The final height will be adjusted when the layers are finally placed within the box. &lt;br /&gt;&lt;br /&gt;The next steps are to complete the box construction and the wiring. Once the LED circuit works, the placement of the various layers will be critical in coupling the infrared and providing enough visible light to the LED.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>New Year's in London 2010 Photos</title>
   <link href="http://lab.section9.co.uk/2010/01/02/new-years-in-london-2010-photos.html"/>
   <updated>2010-01-02T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2010/01/02/new-years-in-london-2010-photos</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;Decided to return to the Southlands of the UK for New Year's. Several bars in Camden, Japanese stores and Korean cafes later, I ended up on Primrose Hill for a large party and a terrific view of the capital. Sadly, I was sans camera which sucked somewhat. Still, there turned out to be a parade on new year's day, passing through Trafalgar Square and Westminster. A great opportunity to learn about taking shots in massive crowds! No press pits here. &lt;a href=&quot;http://www.flickr.com/photos/section9/sets/72157622997402307/&quot;&gt;Check out the latest snaps on Flickr&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Heres a sneak preview!&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/Sz-QsCuWoAI/AAAAAAAAAi8/CABQ4_0sRVE/s1600-h/DSC_0709.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 213px; height: 320px;&quot; src=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/Sz-QsCuWoAI/AAAAAAAAAi8/CABQ4_0sRVE/s320/DSC_0709.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5422211562697302018&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>QRCodes with T-Shirts! It's the new fashion!</title>
   <link href="http://lab.section9.co.uk/2009/12/22/qrcodes-with-t-shirts-its-the-new-fashion.html"/>
   <updated>2009-12-22T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2009/12/22/qrcodes-with-t-shirts-its-the-new-fashion</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;So, I've been playing around with QRCodes; these cheeky little 2D barcodes from Japan. Having used them as part of the treasure hunt for new freshers at Leeds Uni, I figured that with the trend of funky clothing and geekery, creating QRCodes for clothing would be cool. There's already a few guides for knitting QRCodes with a knitting machine out on YouTube, so here is my guide for sewing your own QRCodes.&lt;br /&gt;&lt;br /&gt;A sewing machine and some material is clearly essential. I should point out that rather than sewing, a better term to describe my skill would be 'welding'.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/SzD9bEd54QI/AAAAAAAAAic/e4Hk7UC5mTc/s1600-h/DSC_0002.jpg&quot;&gt;&lt;img style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 241px;&quot; src=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/SzD9bEd54QI/AAAAAAAAAic/e4Hk7UC5mTc/s320/DSC_0002.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5418108993224171778&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Secondly, you'll need some T-Shirt transfer paper and an inkjet printer. I decided to go for &lt;a href=&quot;http://www.amazon.co.uk/gp/product/B000W4H606/ref=pd_lpo_k2_dp_sr_1?pf_rd_p=471057153&amp;pf_rd_s=lpo-top-stripe&amp;pf_rd_t=201&amp;pf_rd_i=B000FSFA3E&amp;pf_rd_m=A3P5ROKL5A1OLE&amp;pf_rd_r=1TGH7PMHGPVKP4DAPVZT&quot;&gt;this pack from Amazon&lt;/a&gt;. As QRCodes are black and white, printing black on white seems logical. Generally, t-shirt printing works only with light colours (something that I've hated!) but fortunately, these transfers are very good.&lt;br /&gt;&lt;br /&gt;Next, you need to generate your design. I used photoshop and the &lt;a href=&quot;http://qrcode.kaywa.com/&quot;&gt;QRCode Generator&lt;/a&gt; to get a nice image with a flame motif. Porting this into something like Pages, Word or Open Office, I printed out a stack of codes. &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Remeber to reverse the design!&lt;/span&gt; This caught me out. As you are transferring the design, you'll be turning the paper over in order to iron it which mirrors the pattern. QR codes can't be read mirrored oddly enough! :P&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/SzD_aA3BMqI/AAAAAAAAAik/c2qw_IRK7wI/s1600-h/DSC_0005.jpg&quot;&gt;&lt;img style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 227px; height: 320px;&quot; src=&quot;http://4.bp.blogspot.com/_WNXP2eEZSdg/SzD_aA3BMqI/AAAAAAAAAik/c2qw_IRK7wI/s320/DSC_0005.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5418111174099153570&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The guide on the pack is pretty good and if you follow it reasonably closely, you'll get a result. I tried two materials: a thin, light shirt material and some thicker, brushed cotton. Turns out the thinner, shirt material worked better with the transfers though the brushed cotton feels much nicer. Whether or not that can be read with a reader is still an open question.&lt;br /&gt;&lt;br /&gt;Next, you need to sew the edges of the badge so it won't fray. The result should look a little like the one shown in the image. Don't make the mistake I did of cutting out the patch from the main piece of material before sewing; it makes it a hell of a lot harder.&lt;br /&gt;&lt;br /&gt;Once you've cut out your new badge, you can sew it to anything. I thought I'd try with one of my oldest and coolest t-shirts. It works quite well but remember that t-shirt material is an utter pain to work with. Don't try and cheat and not use pins. I screwed up here and tore a little of the sleeve. Pin it and make sure it's stretched right and in place.&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/SzD_6XG2REI/AAAAAAAAAis/ek-LN5NDAfA/s1600-h/DSC_0009.jpg&quot;&gt;&lt;img style=&quot;float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 320px; height: 208px;&quot; src=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/SzD_6XG2REI/AAAAAAAAAis/ek-LN5NDAfA/s320/DSC_0009.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5418111729826939970&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Questions still arise. Can it still be read crumpled? How long does it last in the wash? How small can it go? can we morph and edit the code? We shall have to find out.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Playing in the Snow</title>
   <link href="http://lab.section9.co.uk/2009/12/21/playing-in-the-snow.html"/>
   <updated>2009-12-21T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2009/12/21/playing-in-the-snow</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;Im sure the pro photographers who've been at this game for a while will be able to give me some tips about shooting in the snow. I'm thinking HDR and multiple exposures as the snow must contrast too much but hey, I'm sure I'll figure it out. &lt;br /&gt;&lt;br /&gt;Tried another panorama. That was a lot of fun and seems to be a skill in itself! Once I get a decent flash plugin Ill get some stuff posted live. Until then, check out the Flickr-ness: &lt;a href=&quot;http://www.flickr.com/photos/section9/&quot;&gt;http://www.flickr.com/photos/section9/&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>First Panorama Attempt</title>
   <link href="http://lab.section9.co.uk/2009/12/17/first-panorama-attempt.html"/>
   <updated>2009-12-17T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2009/12/17/first-panorama-attempt</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;div style=&quot;float: right; margin-left: 10px; margin-bottom: 10px;&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/section9/4193558786/&quot; title=&quot;photo sharing&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2501/4193558786_f61fdb7d8c_m.jpg&quot; alt=&quot;&quot; style=&quot;border: solid 2px #000000;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 0.9em; margin-top: 0px;&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/section9/4193558786/&quot;&gt;First Panorama Attempt&lt;/a&gt;&lt;br /&gt;Originally uploaded by &lt;a href=&quot;http://www.flickr.com/people/section9/&quot;&gt;Benjamin Blundell&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;I've been loaned a 10.5mm Nikon Lens with a panoramic mount. It seems like a lot of fun but before I go totally wild with it I figured I'd do some test shots indoors to see how it works. I think the beauty of Panoramas is in the viewing though; they don't seem too interesting when presented flat like this.&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>QRCodes, Django and 3D graphics</title>
   <link href="http://lab.section9.co.uk/2009/12/11/qrcodes-django-and-3d-graphics.html"/>
   <updated>2009-12-11T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2009/12/11/qrcodes-django-and-3d-graphics</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;I have to say, I've never been busier in my entire life! So many things I'm working on and so little time. London certainly has that effect on people! At the moment, CASA is working on a top secret project involving QRCodes, &lt;a href=&quot;http://www.djangoproject.com&quot;&gt;Django&lt;/a&gt; and a whole host of other little technologies. Means I get plenty of Python practice with some Objective-C and C++ thrown in.&lt;br /&gt;&lt;br /&gt;Closer to home, I've become a big fan of &lt;a href=&quot;http://www.openframeworks.cc&quot;&gt;OpenFrameworks&lt;/a&gt;. C++ is still the daddy in certain circles, with graphics being the major one, especially when you code on a mac. Working on some computer vision with a NIN related theme. Tough times but all good!&lt;br /&gt;&lt;br /&gt;Recently covered the 'A' Gig at the Islington O2 Academy. Photos will be up on &lt;a href=&quot;http://www.flickr.com/section9&quot;&gt;S9 Flickr&lt;/a&gt; and &lt;a href=&quot;http://www.roomthirteen.com&quot;&gt;RoomThirteen&lt;/a&gt; shortly.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Since it's Friday, take a look at Flight 404's &lt;a href=&quot;http://www.flight404.com/blog/?p=370&quot;&gt;Cymatic Fluid&lt;/a&gt; graphics piece. It's totally awesome!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>FTIR for Multitouch</title>
   <link href="http://lab.section9.co.uk/2009/12/03/ftir-for-multitouch.html"/>
   <updated>2009-12-03T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2009/12/03/ftir-for-multitouch</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;I'm being very British here. If I had a shed, I'd be in it! :D Since the entire HCI and design community is raving about multitouch like it's the second coming, I figured I'd get involved:&lt;br /&gt;&lt;br /&gt;&lt;object width=&quot;400&quot; height=&quot;300&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=7949828&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=7949828&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;400&quot; height=&quot;300&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href=&quot;http://vimeo.com/7949828&quot;&gt;FTIR Mini Table Part 1&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/user1678273&quot;&gt;Benjamin Blundell&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com&quot;&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Recent Design Work</title>
   <link href="http://lab.section9.co.uk/2009/11/25/recent-design-work.html"/>
   <updated>2009-11-25T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2009/11/25/recent-design-work</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/Sw1bn98zPQI/AAAAAAAAAfY/Fh3veNVEBq8/s1600/960_layout.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 320px;&quot; src=&quot;http://2.bp.blogspot.com/_WNXP2eEZSdg/Sw1bn98zPQI/AAAAAAAAAfY/Fh3veNVEBq8/s320/960_layout.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5408079469744438530&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Something I've been working on today. Enjoy.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Hellfire Festival</title>
   <link href="http://lab.section9.co.uk/2009/11/08/hellfire-festival.html"/>
   <updated>2009-11-08T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2009/11/08/hellfire-festival</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;Recently took some shots at the &lt;a href=&quot;http://www.hellfirefestival.com/&quot;&gt;Hellfire Festival&lt;/a&gt; for &lt;a href=&quot;http://www.roomthirteen.com&quot;&gt;RoomThirteen&lt;/a&gt;; the premier online rock magazine! :D These guys have been really kind to me over the years so I try my best to get some good shots for them. The Hellfire Festival was a bit of a let down though. It felt more like a conference at the end of the day, being as it was held inside the NEC. Very odd having carpet underneath you when listing to metal.&lt;br /&gt;&lt;br /&gt;Traveling up to Birmingham was not fun. Missed the first train and then had to pay loads to get another. Had to return on the last train full of football fans, to Camden where the local night lunatic roam. Urgh.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.senser.co.uk/&quot;&gt;Senser&lt;/a&gt; saved the day though. Despite having to leave before their set finished, they played &quot;State of Mind&quot; early on which made my night!&lt;br /&gt;&lt;br /&gt;Anyways, the entire set can be found on the &lt;a href=&quot;http://www.flickr.com/photos/section9/sets/72157622637605181/&quot;&gt;Section9 Flickr - Hellfire Set&lt;/a&gt; page.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>RFID and Bluetooth Fun</title>
   <link href="http://lab.section9.co.uk/2009/11/03/rfid-and-bluetooth-fun.html"/>
   <updated>2009-11-03T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2009/11/03/rfid-and-bluetooth-fun</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;object width=&quot;400&quot; height=&quot;300&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=7325545&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=7325545&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;400&quot; height=&quot;300&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href=&quot;http://vimeo.com/7325545&quot;&gt;Little Black Box&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/user1678273&quot;&gt;Benjamin Blundell&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com&quot;&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;This little video shows my Little Black Box. This small gizmo has a MIFARE reader, a bluetooth module and a battery pack. It is possible to read off UIDs of MIFARE cards (such as the Oyster in the UK) using this module. It works quite well over RFCOMM using PySerial. A nifty little box for experiments. I'll post the final video and code once we have a phone connecting to this.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Men are from Mars</title>
   <link href="http://lab.section9.co.uk/2009/10/31/men-are-from-mars.html"/>
   <updated>2009-10-31T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2009/10/31/men-are-from-mars</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;div style=&quot;float: right; margin-left: 10px; margin-bottom: 10px;&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/section9/4060237527/&quot; title=&quot;photo sharing&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3485/4060237527_04d5702dd1_m.jpg&quot; alt=&quot;&quot; style=&quot;border: solid 2px #000000;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 0.9em; margin-top: 0px;&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/section9/4060237527/&quot;&gt;Men are from Mars&lt;/a&gt;&lt;br /&gt;Originally uploaded by &lt;a href=&quot;http://www.flickr.com/people/section9/&quot;&gt;Benjamin Blundell&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;I'm really glad to be back into the graphic design again. I saw a good tutorial in the latest edition of Computer Arts magazine and really wanted to learn the techniques. This photo came from the festish shoot I had taken part in and this was the idea I really wanted to convey.&lt;br /&gt;&lt;br /&gt;For me, the green dress speaks of Flash Gorden and sexy alien women and all that sort of thing. I had asked the model to pose this way since it meant I could get the 'flying' space effect.&lt;br /&gt;&lt;br /&gt;Makes a nice change from iPhone programming and screwing around with soldering irons! :P&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Subversion .vs Mercurial for Coders and Designers</title>
   <link href="http://lab.section9.co.uk/2009/10/26/subversion-vs-mercurial-for-coders-and-designers.html"/>
   <updated>2009-10-26T00:00:00+00:00</updated>
   <id>http://lab.section9.co.uk/2009/10/26/subversion-vs-mercurial-for-coders-and-designers</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;I used to use Subversion quite a bit. Despite the wierdness of setting up a new directory, it worked quite well as a personal backup. I could backup work to a web-enabled repos. For designers, it's great to be with a client and simply download the latest versions from the web. All in all, it worked quite well.&lt;br /&gt;&lt;br /&gt;However, I start my new job with CASA and get back into the code. I start hearing about Perforce, GIT and Mercurial and it dawns on me that although Subversion might be fine for personal work, when you do collaborative coding, something else is needed. I checked out Mercurial, as I'm a python fanboy and after a few hurdles, I began to love it.&lt;br /&gt;&lt;br /&gt;One thing that did happen was that my server's hard-disk died. When this happened, A lot a few commits from Subversion. I still had the latest works on my mac however. Because of the version history and number I couldnt restore my latest versions back to the server. I think Mercurial, by it's very nature, avoids this issue by not having a &quot;master&quot; server or repository.&lt;br /&gt;&lt;br /&gt;So far, I can see the benefits of Mercurial, even though I use it more for personal backup and graphics.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Steampunk!</title>
   <link href="http://lab.section9.co.uk/2009/10/25/steampunk.html"/>
   <updated>2009-10-25T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2009/10/25/steampunk</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;I'm mostly a cyber-punk kind-of guy as is fairly obvious really. However, I do so like a little Steampunk now and then. It turns out that there is a really good exhibition over in Oxford, UK. I went to see it today with the family and it turned out to be a lot of fun. Check it out at &lt;a href=&quot;http://www.mhs.ox.ac.uk/steampunk/&quot;&gt;http://www.mhs.ox.ac.uk/steampunk/&lt;/a&gt;. Should be running for a few more months yet.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Working with Youtube, GData and Apple</title>
   <link href="http://lab.section9.co.uk/2009/10/23/working-with-youtube-gdata-and-apple.html"/>
   <updated>2009-10-23T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2009/10/23/working-with-youtube-gdata-and-apple</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;To be honest, I'm quite disappointed with Apple these days. The YouTube app, and indeed, any youtube support is quite poor. We've been working with private movies for most of the last two weeks and it seems that you simply can't launch the correct links. Fire off a private YouTube link to the App and no joy. &lt;br /&gt;&lt;br /&gt;To be honest, Google haven't been much better either. Their GData stuff only allows the grabbing of meta-data and not the actual private page or video. This is a real shame as the correct links would indeed work a treat. Not bothered about all the rest of the crappy data... we just want the video!!!&lt;br /&gt;&lt;br /&gt;Disappointed and haven't had chance to do any graphic design in weeks. Still, there are plenty of photos up on Flickr as S9 has been roving around the nation's capital!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>The Singularity in eBook form</title>
   <link href="http://lab.section9.co.uk/2009/10/13/the-singularity-in-ebook-form.html"/>
   <updated>2009-10-13T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2009/10/13/the-singularity-in-ebook-form</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;I tend to enjoy reading eBooks these days. Most of them are free, enjoyable and read well on the iPhone. E-Reader is pretty good for these with non-jailbroken iPhones. I'd also suggest that people check out &lt;a href=&quot;http://www.manybooks.net&quot;&gt;manybooks.net&lt;/a&gt;. It's a great little website and seems to be touted by various softwares and people.&lt;br /&gt;&lt;br /&gt;There's been a lot of talk about the &quot;Singularity&quot; which is quite interesting. As Section9 is very much in the &quot;cyberpunk&quot; of design, we like this sort of thing. I found several fictional works on the subject, not least &quot;&lt;a href=&quot;http://manybooks.net/titles/munroejother05everyoneinsilico.html&quot;&gt;Everyone in Silico&lt;/a&gt;&quot; which I'm looking forward to getting into. &lt;br /&gt;&lt;br /&gt;Often, people think that a computing singularity will end up devouring the Earth and taking over, benign or evil or something. I always preferred Ghost in the Shell's middle route of co-existence and co-progression. Still, Masamune Shirow was ahead of his time.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Trials and Tribulations of iPhone Design</title>
   <link href="http://lab.section9.co.uk/2009/10/09/trials-and-tribulations-of-iphone-design.html"/>
   <updated>2009-10-09T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2009/10/09/trials-and-tribulations-of-iphone-design</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;I have to admit, one needs to be really up on their CS to get with the iPhone programming if you want to do anything half interesting. I never realised the draconian rules of Apple were so harsh. Essentially, I'm working with Augmented Reality and that means getting to grips with the camera which is technically illegal. Well, sort of. &lt;br /&gt;&lt;br /&gt;Annoying, applications like RedLaser, Quickmark and a few others have slipped the net and used the &quot;Screengrab&quot; method to bypass Apple's thought police. I wonder if we can do the same? I mean, come on! Apple have made the ultimate device for proper AR with the 3GS; enough to almost tempt me to buy one! But this sort of thing needs to stop.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Flash for the iPhone?</title>
   <link href="http://lab.section9.co.uk/2009/10/06/flash-for-the-iphone.html"/>
   <updated>2009-10-06T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2009/10/06/flash-for-the-iphone</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;Apparently so, according to &lt;a href=&quot;http://www.wired.com/gadgetlab/2009/10/iphone-flash&quot;&gt;Wired and Adobe&lt;/a&gt;. It seems that, finally, we'll be getting some decent programs and what not for our lovely iPhone. &lt;br /&gt;&lt;br /&gt;I've been working with the iPhone API for about 2 days and already I'm beginning to get annoyed with it. Objective-C really isn't a nice language but needs must as the devil drives. Actually, the devil had nothing to do with this one. It's always good for a developer to try new things but I can really see where Apple are making the cash here. Unbelievable, it really is. &lt;br /&gt;&lt;br /&gt;If anyone knows about repeated picture taking with the iPhone, let me know. I, for one, can't wait for Flash CS5 when iPhone support will be available.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Leeds QRCode Hunt</title>
   <link href="http://lab.section9.co.uk/2009/09/28/leeds-qrcode-hunt.html"/>
   <updated>2009-09-28T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2009/09/28/leeds-qrcode-hunt</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;Finally managed to get around to playing with After Effects. Nifty program indeed. With the help of Anthony Sargeant, I managed to put together a little video on the Induction Week Treasure hunt. The idea was for the students to get together and hunt around campus with their QRCode enabled phones or indeed, any camera at all.&lt;br /&gt;&lt;br /&gt;&lt;object width=&quot;400&quot; height=&quot;300&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=6782848&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=6782848&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;400&quot; height=&quot;300&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href=&quot;http://vimeo.com/6782848&quot;&gt;University of Leeds QRCode Hunt&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/user1678273&quot;&gt;Benjamin Blundell&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com&quot;&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Tetleys Campaign on Mugs</title>
   <link href="http://lab.section9.co.uk/2009/09/26/tetleys-campaign-on-mugs.html"/>
   <updated>2009-09-26T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2009/09/26/tetleys-campaign-on-mugs</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/Sr4w_cPl6iI/AAAAAAAAAeQ/byZduw3EyNU/s1600-h/tetleymug.jpg&quot;&gt;&lt;img style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 320px;&quot; src=&quot;http://3.bp.blogspot.com/_WNXP2eEZSdg/Sr4w_cPl6iI/AAAAAAAAAeQ/byZduw3EyNU/s320/tetleymug.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5385796070853175842&quot; /&gt;&lt;/a&gt; It turns out that these boys at CAMRA quite liked my mash-up of digital photography and graphic design and decided to use the image on a set of mugs. I think Tetley's really should be kept in Leeds and the iconic brewery building is something that people should be proud of. Go check out the page at &lt;a href=&quot;http://www.savetetleys.org.uk&quot;&gt;www.savetetleys.org.uk&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Hak5</title>
   <link href="http://lab.section9.co.uk/2009/09/19/hak5.html"/>
   <updated>2009-09-19T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2009/09/19/hak5</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://www.hak5.org/images/donation_badge.png&quot;&gt;&lt;img style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 220px; height: 70px;&quot; src=&quot;http://www.hak5.org/images/donation_badge.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; For these of you who have never heard of Hak5, I totally recommend getting involved. These guys have a podcast / internet TV station and the stuff they come out with is totally l33t. They are quite inspiring and some of the gadgets and projects they come up with are well worth a look.&lt;br /&gt;&lt;br /&gt;Check 'em out at &lt;a href=&quot;http://www.hak5.org&quot;&gt;www.hak5.org&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>iPhone Development for Camera-ness and AR</title>
   <link href="http://lab.section9.co.uk/2009/09/16/iphone-development-for-camera-ness-and-ar.html"/>
   <updated>2009-09-16T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2009/09/16/iphone-development-for-camera-ness-and-ar</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;Getting the camera to do nice things with Augmented reality seems tricky. I can't seem to get a straight answer out of any of the people I've tried to speak with. I am intrigued by this little program called &lt;a href=&quot;http://www.quickmark.cn/&quot;&gt;QuickMark&lt;/a&gt; which is really nifty. It seems to be able to use the camera to automatically hunt for QRCodes. Normally, you take a snapshot and then analyse that. This means you are only using the camera in the way Apple lets you. But, in the full version of QuickMark, you can actually just hold the camera up and it deals with it automatically. How crazy is that? Surely, if this is an official iPhone APP, the AR crowd have missed something?&lt;br /&gt;&lt;br /&gt;I've been trying to get a straight answer on all this Augmented Reality stuff for the iPhone. It turns out that to use the camera, you need access to the &quot;Private APIs&quot; that tend to be used with Jailbroken APPs only. However, this is only for distribution. A nice chap at the University of London told me that you only need the Private APIs to get at the camera and that this DOESNT require you to jailbreak your phone. Once thats done, the rest is simply cross compiled C++ code, from something like the ARToolkit.&lt;br /&gt;&lt;br /&gt;Sounds simple? Well, sadly it only works with FW2. We are now up to FW3.1 . What to do eh? Maybe the 3GS crowd will have better luck! :S&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>WorkSnug</title>
   <link href="http://lab.section9.co.uk/2009/09/14/worksnug.html"/>
   <updated>2009-09-14T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2009/09/14/worksnug</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a href=http://shar.es/1HQFA&gt;WorkSnug&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Posted using &lt;a href=&quot;http://sharethis.com&quot;&gt;ShareThis&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Feedback on S9 Release</title>
   <link href="http://lab.section9.co.uk/2009/09/10/feedback-on-s9-release.html"/>
   <updated>2009-09-10T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2009/09/10/feedback-on-s9-release</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;So far, people seem to be quite impressed with the new S9. There are some things to work on though it seems. Firstly, the buttons on the top right need some work - need to re-align the hit objects.&lt;br /&gt;&lt;br /&gt;Secondly, it seems that firefox on 64bit with Flash is causing issues. Not sure why. It just seems to hang. I wonder if it'll do the same thing once I install snowleopard? We shall have to see. Finally, the movement on the cube seems to make people wonder. Some find it easy.... others not. I'll need to check it out and get back. I want this to be right really because it needs to be. About time I got really down to details as that's what design is about.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>New Section9 Design and Flash 3D</title>
   <link href="http://lab.section9.co.uk/2009/09/08/new-section9-design-and-flash-3d.html"/>
   <updated>2009-09-08T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2009/09/08/new-section9-design-and-flash-3d</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;Section9 Design is now finally up and running. Had to re-learn a lot of Flash AS3. It tuns out that despite claims, there really isn't a lot of 3D stuff in there. Basics, such as Z-Sorting, Backface culling and all that, turn out not to be there.&lt;br /&gt;&lt;br /&gt;If you intend to do 3D with Flash, you are better off using CS4 with something like &lt;a href=&quot;http://five3d.mathieu-badimon.com/&quot;&gt;Five3D&lt;/a&gt;. Papervision is the other major Flash 3D engine but it doesn't take advantage of AS3. It's probably better to use a smaller, simpler engine until the Papervision crew get up to speed with something new. Having said that, Papervision is AWESOME given that they had nothing to work with in the first place.&lt;br /&gt;&lt;br /&gt;SEO is always an issue with Flash. Since all the back-end stuff is powered by &lt;a href=&quot;http://www.djangoproject.com&quot;&gt;Django&lt;/a&gt; it's probably an easy job to generate HTML. Hell, if'd been more clued up, I could have exported everything in XML and used XSLT to generate HTML for these non-flash types. &lt;br /&gt;&lt;br /&gt;Further work for the future no doubt!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Random or not so Random Patterns</title>
   <link href="http://lab.section9.co.uk/2009/09/06/random-or-not-so-random-patterns.html"/>
   <updated>2009-09-06T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2009/09/06/random-or-not-so-random-patterns</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;http://cod.ifies.com/&quot;&gt;http://cod.ifies.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Have a look at this. It's quite interesting to see bitmap outputs of so called Random values. Simple and yet quite pretty I think.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>A day of Web 2.0</title>
   <link href="http://lab.section9.co.uk/2009/09/02/a-day-of-web-2-0.html"/>
   <updated>2009-09-02T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2009/09/02/a-day-of-web-2-0</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;It seems that I've been messing with Web2.0 services for the entire day! Firstly, it appears that Flash doesn't like cross-site linking, so I had to fudge the Django back-end to get the Twitter Feeds and Blogger feeds on Flash's behalf. Bit of a horrible fix really.&lt;br /&gt;&lt;br /&gt;Now that the beta page is up and being tested, I've turned to LinkedIN, Flickr and Blogger. Flickr is such a gorgeous thing to use, it really is. Now that things are organised the joyous Leeds Festival Photos are there so be sure to check these out. &lt;br /&gt;&lt;br /&gt;LinkedIN seems like a rather good alternative to the annoyance of updating an ODT spreadsheet all the time. I'm glad about that for sure. Spent a little time getting that sorted. glad of that.&lt;br /&gt;&lt;br /&gt;Web2.0 is cool but I think we need a nicer way of combining and making a gestalt presence out of all the different services. At the very least, one way of combining the lot!&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 <entry>
   <title>>Section9 Design Blog</title>
   <link href="http://lab.section9.co.uk/2009/09/01/section9-design-blog.html"/>
   <updated>2009-09-01T00:00:00+01:00</updated>
   <id>http://lab.section9.co.uk/2009/09/01/section9-design-blog</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;Never really been that sure about blogging but I feel It's part of the business these days and it provides a nice medium for keeping peopel up-to-date with events in my world, whilst retaining an informal edge. It's nice to have that distinction from the main website. Hopefulyl that should be up very soon.&lt;/p&gt;&lt;/blockquote&gt;
</content>
 </entry>
 
 
</feed>

