Teaching Your Computer To See The Easy Way


You’re curious about how SnapChat can apply those stamps, you want to create an autonomous controller for your USB controlled Nerf missile launcher, or maybe you have an actual business need. Here is a simple formula to get started with OpenCV so that you can achieve your Computer Vision dreams. Cinder provides a great creative computing framework with a simple pattern of update and draw cycles. It already has support for OpenGL rendering, and it can easily support OpenCV.


The State of Async/Await

synchronization picture

A long time ago, asynchronous programming was an exotic practice.  Not many people were doing it, and their code was punctuated with things like assembly language and processor interrupts.  Less anciently, preemptive multitasking OS’s made asynchronous programming more accessible, albeit often still with arcane and unnatural boilerplate, not to mention hazards of sharing mutable data.

Today asynchronous programming is mainstream — more than that, it’s a firm expectation of polished software for desktop, mobile, and web.  The tools for asynchronous programming have gotten better, even as far as adding syntactic sugar, which async/await certainly is.


An RPC Framework for JUCE

JUCE image

Recently, I’ve been working on a project for a long-time client who came to us with a request that we haven’t seen in a while–we were tasked with taking their existing application written in C++ using the JUCE application framework into two separate applications:

  • A Windows Service Application that will start itself automatically at boot time to continually be processing streams of audio and network data using their proprietary hardware
  • A GUI application that connects to the service app doing the processing for monitoring and control.

Since the application was already cleanly written using the Model/View/Controller architecture, what I really wanted to have was a Remote Procedure Call layer that would let me chop the existing Controller object into two pieces:

  • an API half that is called by the UI code exactly as it’s already being called
  • an “engine”/server half that actually houses the logic to perform the work of the application.

…that would be connected together over some sort of an interprocess link, most likely sockets. (more…)

NAMM Wrap-up (part 1)

Julian Storer, creator of JUCE

Thanks to the blizzard that hit my East Coast home base while I was at the NAMM show this past weekend, I’m currently cooling my heels in a Starbucks near family in San Diego while figuring out how to get home. I’ve been trying to figure this out since the second morning of the show when I got the first email of several telling me that my flight home was canceled, so I ended up missing a significant amount of time on the show floor speaking with clients and checking out new gear — very frustrating.

One unexpected upside of being stranded in Southern California was that I was able to attend a developer meetup hosted by ROLI, the owners of the JUCE C++ framework that’s widely used in the industry. (more…)

Radically Cross Platform: Animation

Animated gif image of parrot flying.

Image of Linnet Kineograph from 1886(This is a continuing series sharing design and implementation notes for a cross platform 2D game or graphical app engine I wrote in C# using Xamarin and Monogame.)

It was hard to choose next between covering the animation system, physics engine, or custom scripting language, as each is essential in its own way, and they’re also tightly integrated. But let’s start with animation. (more…)