Website Reboot

After nine years of blogging, it was time for an overhaul. The new incarnation of is focused on my recent work, and can be found here.


BitBucket Project Hosting

I’ve started moving my open-source projects to The first project to be relocated is the Bespoke Open Sound Control Library. It’s new home is:

BTW, Bitbucket rocks. I prefer it over Github because it allows free private hosting (limited to 5 project contributors). And Atlassian (creators of BitBucket) have recently released a Windows version of their SourceTree Git client. It’s likewise quite excellent.


open Sound Control Version 2.0

I’ve just posted the 2.0 release of the Bespoke Open Sound Control Library. This is a major release that includes a ton of updates including:

  • Updated to .NET 4.0 Framework and Visual Studio 2010.
  • Overhauled TCP transport and corrected message framing.
  • Added support for Osc TimeTag, ASCII character, boolean, Nil, Infinitum, and RGBA color.
  • Events now properly raised for nested Osc bundles and messages.
  • Much improved documentation.
  • Simplified and separated out functionality in the Bespoke.Common library.
  • Changed the default expected byte order (endianness) back to Big endian (as per the OSC specification).
  • Improved demo applications.
  • General refactoring.

I hope you find this release useful.



My site’s been recently inundated with Forum spammers, so I’ve disabled forum user registration. If you are genuinely interested in posting something on the forums, that isn’t spam, shoot me an email message and I’ll create an account for you.


Open Sound Control – Mono Version

In response to an inquiry about supporting the Bespoke OSC Library on Linux, I’ve ported the project to Mono. This is the same 1.7 code base, just packaged using MonoDevelop with a few minor changes to supports some Mono quirks.

I haven’t tested this on Linux yet (need to build a Linux box first) but considering that Mono/MonoDevelop are cross platform, it should work without modification.


Multi-Touch for General-Purpose Computing: An examination of Text Entry

This is the title of my Ph.D. dissertation, which asks the question: “Can multi-touch, without a text entry peripheral, provide a platform for efficient text entry? And, by extension, is such a platform viable for general-purpose computing?”

For anyone who might be interested, I’ve posted the final version here.


Open Sound Control Version 1.7

I’ve posted another update to the Bespoke Open Sound Control Library. This release addresses an issue with the underlying TcpServer spinning in its listener thread. Thank you to the DMXControl developers for posting this issue to the Forums and pointing out an excellent way to address it.

This release also changes the default expected byte order (endianness) from Big to Little endian. Not sure why I originally defaulted to Big endian, since this library’s primary platform is Windows (Little endian) – thus, there were unnecessary byte swaps happening for integral data types.

If you’re using the library as both a transmitter and a receiver, this has no noticeable consequence. However, if, for example, you’re transmitting OSC packets from a Big endian device, and receiving them through the Bespoke OSC Library on a Little endian PC, you’ll need to change the library’s “expected” byte order. To do this, simply change the OscPacket.LittleEndianByteOrder static property to “false”.

Additionally, I fixed an issue with asynchronous, inline data handling within the TcpServer. Thus, I’ve toggled the default data handling behavior for TCP messages from synchronous to asynchronous handling. Under synchronous data handling, each client worker thread would block when waiting for data. If the client stopped before the server, this isn’t a problem – the thread would catch the disconnect and gracefully end. However, if you stopped a running OscServer that had active TCP clients connected, the Stop() call would hang until all of the clients disconnected – not a happy solution. With asynchronous data handling, the server correctly terminates all active client connections.

Finally, I’ve added explicit project configurations for x64 platforms and have included pre-compiled x64 binaries (along with x86 binaries).


Open Sound Control Version 1.6

I’ve uploaded version 1.6 of the Open Sound Control Library. This release includes two new features requested by users:

  • Added UDP port reuse (multi-cast only). This allows for multiple simultaneous OscServer instances (or other services) bound to the same port.
  • Added OscServer.ConsumeParseExceptions (enabled by default) which suppresses parsing exceptions caused by malformed OSC packets. Disable this option to allow such exceptions to bubble up through the OscServer.


Hey lady! You call Him Dr. Jones!

You may have noticed that I haven’t blogged in awhile. This past year, I’ve been working feverishly on my Ph.D dissertation.; which, I’m happy to say, I’ve just successfully defended. So, in a few short weeks, I’ll officially be Dr. Paul.

Thank you to all of my friends, colleagues, and family who have supported my work over the last several years.

I’ve still been responding to Forums posts, but you can expect new blog posts and updates to my various open source projects in the near future.


Discussion Forums

Hello all,

I’ve employed a discussion forum to help track the comments for the various open-source software packages supported through this blog. I’m hoping this improves over the WordPress comment system which is getting a little stressed. Just click on the Forum page to participate.


Next Page »