My name is James Devine and I’m currently a Graduate Student studying at Lancaster University in the UK, supervised by Joe Finney & Jason Alexander. My main research interests are curry, beer, and performing live music, although from time to time, I like to dip my toes into various areas of Computer Science: operating systems, networking, physical computing, and embedded systems.

The BBC micro:bit

In the summer of 2015 I completed my Bachelors in Computer Science and was invited by my final project supervisor Joe Finney to work on an interesting little project with the BBC. The “little project” turned out to be producing a C++ runtime for a credit card sized educational device called the BBC micro:bit, with one device given to every Year 7 (11—12 year old) school child in the U.K.. A little project indeed!

After an exciting summer working with the likes of ARM, BBC, Farnell, Microsoft, Nordic Semiconductor and many more, I decided there was more fun to be had. Off of the back of my work with the BBC micro:bit, I embarked on a journey to obtain a PhD.


Forming the basis of my PhD is CODAL, an evolution of the micro:bit runtime developed for the BBC micro:bit. The Component Oriented Device Abstraction Layer abstracts each hardware component of a microcontroller as a software component and is used by Microsoft MakeCode to enable the easy programming of microcontrollers using JavaScript/visual programming languages whilst nearing the performance of C/C++. CODAL is now used across many devices and processor types including the SAMD, STM32, and NRF5x processor families. CODAL and MakeCode combined make the programming of microcontrollers simpler for novices.


After simplifying the programming of microcontrollers for novices, I turned my attention towards a more physical problem: connecting external peripherals to microcontrollers. For novices it is tricky to wire external peripherals to microcontrollers correctly, and moreover, the protocols used to communicate between the main microcontroller and the external peripheral are limiting and confusing.

I’ve produced a plug-and-play serial protocol, JACDAC, to network low-cost microcontrollers together (paper upcoming). Not only does JACDAC abtract the hardware from low level register and addresses into higher-level software services, it brings the world of the microcontroller forward into the 21st century using modern web technologies. The elevator pitch: USB for low-cost microcontrollers… except that the protocol is universal to all microcontrollers and actually runs a bus topology 😉.

Future Work

My final section of work will focus on making it easier for novices to connect JACDAC-networks to the Internet (IoT). This will involve proposing a secure but simple architecture for extending JACDAC into the cloud.