More kinect fun - may 12

I have got my kinect going with Microsoft's XNA, which is the programming tool for creating XBox, Windows and Windows phone games. It has been a while since I did any 3D programming, but I have managed to map the skeletal 3d point locations to a 2d render of the camera view. It was a bit easier to do in 2D.

 

Dune hopping - may 12

If you have a hang glider or paraglider, and a good wind, you can take off from one sand dune and sail across to land on another. It's a poor sport as neither wing is sufficiently manoeuvrable to make it much fun. Yet, when the wind picks up, the combination of ground effect and the strength of the wind should allow such a sport to be much more fun with a fairly small wing providing it could tuck like a seagull tucks its wing to avoid getting swept away. Making a small model was easy. Making a computerised model to better determine structural lengths and wing loading required some fiendish trigonometry.

A wing of only 3.6 sq metres will give me the equivalent wing loading of a Canada Goose at 20kg per square metre.

 

Sweep music generator - may 12

Creating sweep sounds in some music software is easy enough, but I use Cubase where they do their best to make it fairly obtuse. So, I have created a sweep generator. Interpolating bezier curves and creating waveforms of changing frequency required some mind-expanding maths, but it beats sudoku.

If you have .Net 4.0 and are running Windows, you can load the program by clicking here. This is a standalone app which saves the sounds as .wav files. I still have to add multiple oscillators, addition and subtraction, LFOs etc, and the pink noise doesn't work, but at least it sweeps.

 

Kinect - part 2 - dec 11

 

Kinect - dec 11

I've been having another go with Kinect now that the SDK has been released. Here's a short video.

 

Animation, Music - oct 11

I have been starting up a new venture since the beginning of the year, Island City Music

So far, we have released a few singles and an album, available from all digital distributors, iTunes, Amazon etc. We have just expanded into video, and built a green screen in the studio to enable us to create videos for our musical offerings. Above is a promo video for Azubuike (pronounced a-zoo-be-kay) entitled Doh-Ray-Me.

 

Salter MiBody - jan 11

After getting a little overweight, I decided to invest in a set of Salter MiBody 9119 scales. They're pretty good, and I have been using them for a little under 2 years to measure my decreasing body fat, visceral fat and bodyweight, and increasing muscle. The data from the scales can be downloaded to your PC to watch your progress.

I got frustrated enough with the free software you get to write my own. I want to choose which graphs to see, I want the window to resize, I want more than 3 graphs, I want to see more than one person etc, etc, etc. The image above shows the Salter software, and the image below shows my replacement. At some point, I shall put it out for all, but it still has a few bugs.

 

Animator - dec 10

I have been porting my animator software to Silverlight, so it can run on the Mac as well as Windows. Here is the introductory demo animation.

 

Triple viewer update - dec 10

Quite a few people are still looking at version 19 of the triple viewer. This is quite old now, and before I departed the triple viewing arena, we were up to version 65. I was rather proud of where it got to, although much work was still required.

To get started, make sure you have Silverlight 4 installed, then go to www.bigripples.com/65. Hover over "menu" in the top left and click on "options" when it appears. Then select data source, and select BigRipples for the service and bigripples for the server. Save changes and close.

In the default view, you can click items to expand and collapse them, or click and drag the mouse in the semi-transparent background area to twizzle the items around. You can drag down on an item for more options, or drag it out to the right and let go of the mouse, and it will fly into the basket. You might also like the carousel, which is pretty groovy. Click on the menu and select the slider control. Drag it out to a largeish rectangle about 600x400 pixels by clicking and dragging in the transparent-white line along the bottom on the control. You can also position it by grabbing the handle that looks like a barcode. Select examples, then sized lists, then 100 items. Right click the control and select Carousel, then move the mouse around in the control.

Sorry there's no user manual.

 

Qur'an viewer - another attempt - mar 10

Microsoft's Silverlight has given me another opportunity to to try and render the Qur'an on a computer screen without using images. This is a mashup of many other pieces of effort into what I am hoping will finally become an acceptable rendering.

This version places dicritics/harakaat correctly, even above lam-alifs, including alif-hints, maddas and hamzas etc. In fact, the only thing left to do is ligatures, which is the one step remaining to be able to render exactly as the hafs version which is printed.

Of course, much effort remains to encode the Qur'an in its entirety. The only two surahs which render so far are al-Fatiha and an-Nas.

Click here for more.

 

Tephigrams - oct 09

I haven't had time to post anything here since the end of last year, I've been soooo busy. So here are two disparate posts.

I have just finished my club pilot training on my paraglider, so I am now pilot rated on hang glider and paraglider, and have become interested in lift. Lift is created by thermals, and it's what gets you across country without an engine.

To understand lift requires the arcane knowledge contained within a tephigram, also called a skew-t or skew-t log-p diagram. I have neither skewed T nor logged P. I haven't skewed T because it lies about where it gets cold, and I haven't logged P because this squashes up the bottom part of the diagram, and I am only really interested in the bottom part.

"What is it?" you may ask. Click here for more

 

Triples - oct 09

Are you still using relational data? Are you still using the same tired old metaphors of search or drilling down hierarchies in treeviews? If so, then you need Big Ripples, a new way of looking at information. Also try the Synonym list - you'll love it.

You may be asking yourself what this is all about, and it is a gestating idea that lots (and I mean millions if not billions of bits of) information can be held in a semistructured way using triples. A triple is a link of three things, a subject, predicate and object. "Nigel hasHobby HangGliding" is an example, where Nigel is the subject, hasHobby is the predicate and HangGliding is the object. By storing information in this semi structured way (not free text, not relational database), it can be browsed through using a browser. By browser, I mean a specialized browser, not a web browser. See an example at www.bigripples.com. I won't say it is industrial strength yet, but it is at least usable. To get it going hit the button at the top with example in the text box, then to do groovy things, click and drag down on a node to get a popup menu. I know you probably won't get it immediately - it has taken me a while, but it's a start.

Update - before you start, click options and make sure the data source is set to http://www.bigripples.com/7/ripley/gimme.ashx

The idea is this - if you go to a search engine and type in "red flowers", you will spend most of a day going through page after page of results looking for a list of red flowers. You may find one or two, but none of them are complete. What you really need instead of a relational database with a property of colour where some of the entries are "red", is a triple Poppy hasColour Red. With some clever tinkering - which I haven't done yet - the browser will create a list of all red flowers. Neither is the triple store worried by variegated flowers. Another triple "Poppy hasColour White" would not cause any problems. Who knows where it would go in relational data? You'd have to jam it in somewhere, or revisit the data structure. Anyway, I could go on forever, and would probably have to. Big Ripples is a start, I'm not sure where it will go. I am working on this with IPV for use in media asset management.

 

Animation software update - dec 08

I have been porting my animation software over to WPF for the last month or so, and it is coming along quite well. I have managed to create my first animation, a demonstration of the basic animation capabilities of the Windows Presentation Foundation. Altogether, putting the animation together took around two days, including bug fixing the software.

 

Animation software - dec 08


Update Jan09 - Animator is now available for download. Click Software -> Animator in the menu.

I have decided to provide my animation software free of charge to the casual user. Commercial and broadcast users will have to purchase a licence, but I think this is fairer, and most software seems to be going this way.

Click Software in the menu to see what's available, and please bear with me as I get it all sorted out.

I have also added a forum to be able to discuss the complexities of Animator, which are many.

 

Heating oil vs crude oil price - oct 08

 
The oil price is fascinating of late. Is it greedy producers, speculators, or oil firms pushing the price?

This entry isn't about any of that. It is about how much we pay for heating oil compared to the crude oil price. The following graph shows the crude oil price against the average and UK minimum price for heating oil over a 12 month period. The red/black lines are the crude oil price. The yellow line is the minimum UK price, and the orange line the average UK price.

This graph shows that at present, the heating oil price is inflated against the crude oil price by approx 20%. Last time crude oil was at this level, heating oil was 10p per litre cheaper. It also shows there is a lag of about 1 week between fluctuations in the crude and heating oil prices.

Windows Presentation Foundation - feb 08

 
I seem to have been living a parallel life to the WPF developers. They haven't seen my work because it's SECRET, and I hadn't bothered to check on theirs because my machine was rather cranky and wouldn't install .Net 3.5.

One rebuild later and everything was as it should be, so I could begin my WPF adventures. Read about them on my WPF pages.

** UPDATE ** WPF 9 month review now available

 

Input by fingertip pressure - dec 07

Some time ago, I made a VR glove. It looked like this:

It used springy wires to push the sliders along variable resistors. The position of the slider related to the angle of the knuckle and first finger joint.

The recent advent of more groovy materials have made other methods more useful. Take, for example, Peratech's Quantum Tunneling Pills. A QTC Pill is a 3mm square piece of rubber like material, and its resistance changes according to how much pressure is on it. So, if you attach one to your finger and squeeze it with your thumb, you have an analogue input into your computer.

I'm not saying it will happen by magic. A bit of electronics is required. Here is my final configuration. Note the left hand red bar on the computer screen, being driven up by squeezing the pill, which is mounted on a circuit board between my finger and thumb.

Here is how I made it.

First, I cut a piece of veroboard to a shape I could stick on the end of a glove. I cut a few and used the one on the right as it seemed to fit best. The centre image shows where the pill will be mounted, across two strips of the board. The third image shows the two wires I soldered to the board.

I mounted the pill using insulation tape as this seemed the most appropriate method. I laid down four layers of tape on a glass sheet, and marked out the shape of the veroboard I had cut, and also of the pill placement. With a scalpel, I carefully cut around the shape, and removed the square pill shape from the centre. The thickness of the four layers of tape was about half of the pill, so there would still be room to squash it without being hampered by the surrounding tape.

I then placed a new layer of tape on the glass, and stuck one of the cut and discarded layers over the top of it. I cut around the inside of the discarded piece to get a complete layer (without the square hole) to stick over the top. This single layer would hold the pill in place.

The resistance of the pill can be read by connecting a multimeter across the pill's output wires. To convert the resistance into an analogue voltage whcih can be read by an analogue interface, you need a circuit like this:

The working setup at the beginning of this entry shows the mounted pill glued with superglue to the first finger of a woollen glove. When mounting the pill this way, ensure you have a polythene glove on your hand inside the woollen glove, or you will glue your finger to the inside of the glove!

I attached the output to my Velleman K8055 USB card, and happily, it worked first time.



C# & handwriting recognition using Microsoft.Ink - dec 07

I thought I'd have a look at reading a graphics tablet in C#. It appears that Vista users have lots of stuff readily available, but my development machine is on XP. A few downloads were required:

  • Windows Tablet PC SDK
  • Windows Tablet PC SDK Analysis extensions
  • Windows Tablet PC SDK Handwriting recognition packs
The ink worked OK, but I couldn't install the recognition packs as I have XP home edition. Doh. I've got the pro version, but have never got around to installing it.

Velleman USB, C# & no K8055D.dll - dec 07

I was a little miffed when I bought my Velleman K8055 / VM110 USB experimental interface board and found that it came with a closed source .dll by the name of K8055D.dll or K8055D_C.dll depending on your flavour of compiler. I bought it to look into usb programming, and felt a little left at a locked door.

A little googling showed that others too were less than overjoyed, and a little more showed the beginnings of a solution.

From previous work by Andy http://www.hexten.net/..., and Ashley Deakin in VSJ, along with a little trawling through SniffUSB logs, I have managed to open the door for us C#/Win32 programmers.

The application uses three of Ashley Deakin's classes for the Win32 definitions and HidDevice, and I have left his BuzzHandsetDevice class in for reference as that was what I based the K8055Device class upon. I have added a few functions to the HIDDevice class to include opening a device by its device ID.

So, if you want to drive and read your K8055 without using the supplied K8055D.dll, here is the code to do it using only C# and Win32. The win32 dlls used are setupapi.dll to get a list of the devices, and hid.dll which contains all of the USB stuff. HID = Human Interface Device, which is what one class of USB devices are called.

** Disclaimer ** This is not open source, with all the restrictions "open" entails. This is your source. You can change it, use it, sell it or do what you want with it in any way you choose. As it is YOUR source, if it breaks your card/computer/marriage/lifestyle, it was nothing to do with me.

If I ever manage to polish the source code into a nice shiny well presented pile, I shall repost it, but for now...

Click here to download the source code.

 

Velleman USB & C# - dec 07

It has long been my ambition to get back into robotics, but other things have always kept getting in the way. Recently, I purchased the Velleman USB Experimental Interface Board - VM110 - from my old favourite, Maplins. It came with code a plenty, in every flavour apart from C#. I did find a C# app on Velleman's web site, but the P/Invoke caused a stack overflow. I then took the VB.Net code and converted it to C#. As far as I can tell, it all works. If you would like a copy of the C# version, click here to download it.

 

Sequence Viewer - nov 07

I have another new software product. It is a video viewer for animators, allowing the viewer to step through a video frame by frame, backwards or forwards, to see exactly what is required to animate images.

I have written this mostly in the frustration that modern players do not have a button to watch a video one frame at a time. If you're trying to animate anything, you need to spend a lot of time studying images frame by frame. It is also useful for picking up hints from other animators, as watching even in reduced speed, you cannot see what is happening with sufficient clarity.

I have also included some image analysis tools specifically for video. Click about in the menu for more information.

If it looks like I'm throwing these products out at a rate of knots, I'm not. Most of them have been in development for a few years as part of an animation suite, and I'm extracting them as individual products from this ongoing work.


Image Analyser - oct 07

I have a new software product. It is used to analyze images, so digital artists and programmers can see varying colour levels across an image. For more information, expand the software menu, and take a look at the Image Analyzer pages. I hope you like it.

New web design - oct 07

I hope you like the new design. I have attempted to unify the not very many formats I had before, and build a better menu system. All of the side links from the software architect section are gone - I'm not sure if they were used much, but searching the page is more economical in terms of design clarity.

I have also added this blog, so I can post some things I wanted to before, but had no home for. 

On Ajax, framesets and scrolling - oct 07

Every time I write a new website, I am faced with the same conundrum. For 10 years it has been more or less the same problem. A new raft of technologies under the banner of AJAX goes some way to solving the problem, but like all solutions, some way is generally not all of the way.

The problem is this:

How can I have a single pane, which has a menu on the left and the content on the right, with only the main scrollbar on the right hand side being used.

Framesets give you scrollbars within each frame, so the resulting page can look a mess with two scrollbars down the right, one for the frame and one for the browser.

Ajax requires so many fudges it's not funny.

What is less funny is the fact that it could have all been solved long ago by supporting src within the div tag.

<div id="content" src="somefile.html" />