A Brief History of NetKernel

on extracting release data over nine year period

I’ve just finished working on exposing a complete change history for NetKernel for the period from the release of NetKernel 4.0, nine years ago. Previously our mechanism for publicly exposing this information has been solely through the, once weekly, newsletters. However that medium is unstructured which meant it was hard to get an overview of changes and check for specific releases for any particular package. Since the release of NetKernel 4, we introduced a repository approach to releasing updates to NetKernel. [Read More]

External Request Profiler

We’ve been working recently with a client, on a solution, revolving around crunching large volumes of data. The scale of data meant that even on a large cluster the computation takes many hours. The usual mode of operation for these compute jobs is to set them off in the evening, and return the next working day to see the results. I was working with them to capture some engineering figures and statistics to assess the performance and opportunities to optimise or re-design. [Read More]

My Experience Building an Alexa Skill

Headline: it is actually pretty easy

Back in November I attended a talk on creating your own Amazon Alexa Skill at Bristech. It’s been something I’ve wanted to play with for a while, so when Amazon had their Black Friday sale I couldn’t resist. I was pleasantly surprised by Amazon’s own tutorial using Lambda: Alexa Python Tutorial - Build a voice experience in 5 minutes or less. It really was quite simple and quick. Amazon have worked hard to make it easy for you to get a custom skill up and running on real hardware. [Read More]

Technical Debt and Entropy

I seem to find myself with a lot of unproductive time - time when I can’t be working on real problems - problems that need access to tools such as a coding environment, terminal, internet searching, and somewhere to capture notes. Situations such as walking the dog, driving, and getting simple chores done are examples of these times. Times like this though, are good for thinking, and recently i’ve been thinking a lot about the concept of technical debt. [Read More]

On The Beach

I’ve had a horrible ray traced pebbly beach scene framed on my wall for a long time now that I really wanted to redo. I’ve used a bit of free time at Christmas along with a major new release of Cheetah3d to do that. Here are a few of the things I created. [Read More]

Quadcopter Down

...and I thought software was hard

I spent a good few months working on and off on the drone. Almost every day I’d get a nice little package in the post from China with a component or such like in it. Unfortunately, the last few things I received still sit unused. After I’d solved the basic architecture of the drone system in as far as how to get easily updatable algorithms both on board and on the ground, things got harder. [Read More]

Beginnings of a Programmable Drone

The struggle to put code in the loop airside and ground side of an autonomous drone

I think it was the final episode in season 3 of Black Mirror that motivated me to start thinking about building a drone again. That episode - Hated in the Nation - involved swarms of autonomous drones deployed across the UK to replace recently deceased bee colonies. In this work of fiction the drones wreak havoc. However the connecting of computation and AI to real moving entities in our world really intrigued me. [Read More]

Generalizing Dynamic Programming

Using dynamic programming techniques to optimise general compute efficiency

Dynamic programming is an approach to efficiently implementing certain classes of algorithms. As a feeble excuse for not noticing this earlier, the term is a little confusing: it isn’t about programming or about doing it dynamically! It was invented in the 1950s by Richard E. Bellman whilst working for RAND Corporation. Apparently he deliberately named it obtusely to avoid his work being considered research! I discovered this term recently when looking into existing research about algorithm optimisation and specifically why the systemic memoisation in NetKernel can optimise solutions to certain problems particularly well. [Read More]