A selection of talks and workshops I have delivered at various events…

Fast and Furious: Overclocking chips for fun and profit

Abstract
Due to the variance in silicon manufacturing technologies, integrated circuits used in everyday designs are usually spec’ed at lower speeds than their actual capabilities. It is, therefore, not unlikely for chips to run faster than their advertised speeds, sometimes at significant margins with a little push. The umbrella term used for this practice is overclocking and it encapsulates a variety of techniques from simply increasing the clock speed to employing elaborate systems with liquid nitrogen cooling. This talk will provide an overview of overclocking and overvolting techniques — investigating the effects of forcing chips to run faster on the silicon level — and present vftweak: an open source hardware design that aims to simplify experimenting with circuits by providing a programmable interface and monitoring tools.
Slides
Video

Cloud, Distributed, Embedded: Erlang in the Heterogeneous Computing World

Abstract
The future of computing will be heterogeneous and the traditional tools we are used to will not be able to handle the different paradigms required when developing for these systems. This talk will provide a brief overview of heterogeneous computing and discuss how Erlang can help with the orchestration of different processing platforms, using our latest experiment on the Parallella platform as a case study. This talk will also introduce Erlang/ALE, our new framework for embedded systems and provide an update on the Erlang Embedded project.
Slides

The Actor Model applied to the Raspberry Pi & the Embedded Domain

Abstract
The Actor Model has interesting properties that could be used for dealing with complexities posed by modern embedded systems. Using actors as compositional units to describe these systems is a new proposal which stands out and challenges conventional approaches. This talk will demonstrate how, creating a layered architecture for hardware modules and partitioning up complex systems in smaller units, testing becomes much easier, runtime errors are contained, and the architecture becomes maintainable.
Slides
Video

Taking Back Embedded: The Erlang Embedded Framework

Abstract
Erlang was originally designed to control telephony switches at Ericsson which, by definition, are embedded systems. Somewhere along the line the application area changed dramatically and now Erlang is being used to tackle challenges which involve gratuitous amount of parallelism and “The Cloud”. The Internet of Things is the physical extension of cloud which describes how everyday objects around us will become sources of data that will transform our daily lives. Analysts forecast the number of Internet connected devices to reach 50 billion within the next decade, which signifies that we need to think of new ways to architect these new generation of connected devices. This talk will demonstrate how, by creating a layered architecture for hardware modules and partitioning up complex systems in smaller units, testing becomes easier, runtime errors are contained and the architecture becomes maintainable. Using Erlang processes as compositional units to describe these systems is a new proposal which stands out and challenges conventional approaches.
Slides
Video

Erlang Embedded — Concurrent Blinkenlights and More!

Abstract
Managing the resources and utilising the increasingly popular multi-core and heterogeneous aspects of modern embedded systems require new sets of tools and methodologies that differ from the traditional C/C++ flow. Erlang provides features that are highly relevant to solve these issues and yet it is pretty much unknown in the embedded domain — which is surprising considering that it was originally designed for embedded applications at Ericsson! This talk aims to provide an overview of Erlang and the current state of its usage in the embedded domain and talk about our plans to help speed up the adoption rate of Erlang in embedded projects.
Slides
Video

Interfacing the Raspberry Pi to the World — Everything you need to know about P1

Abstract
You’ve received your Pi, set up a web server on it and maybe played a few rounds of Quake. You’re looking for a new challenge and suddenly the header on the corner of the board catches your eye. A quick Google search for “P1 Raspbery Pi” gets you to the eLinux wiki page on Low level peripherals, and you suddenly realise that you can do all sorts of fun stuff by adding extra bits to your Raspberry Pi using this magical expansion port. Where do you start? Is it safe to connect a motor directly to the pins? What sort of interesting components are out there? In this talk we will look at the ways we can communicate with the outside world using the GPIO pins on the Raspberry Pi. We will explore the mechanical, electrical and software side of things and talk about a few example projects you can try at home, and the hardware limitations will be covered and workarounds provided.
Slides

From Breadboard to Finished Product

Abstract
You have a cool project, people are sending you emails asking where they could get their hands on one and you find yourself googling “electronics manufacturing”… Should you get yourself a toaster oven and start a miniature production line in your living room or should you just outsource it? What challenges await you if you decide to go down the contract manufacturing route? This talk aims to give the audience an overview of the electronics manufacturing process, using a project recently completed by the speaker as a case study.
Slides
Video

A Brief Introduction to Programmable Logic

Abstract
Programmable Logic Devices – mainly FPGAs – are frequently utilised in high speed and computationally intensive applications, and with modern devices containing several million transistors and many gigabits/second of connectivity they are becoming increasingly popular in the race to achieve exascale computing power. But what does this all mean and how can FPGAs achieve this processing power? How do they differ from the good old CPUs we have in our everyday computers? In essence, an FPGA is a device that contains configurable blocks of logic along with flexible interconnect between these blocks. They can be configured to contain exactly and only those operations that appear in the algorithms employed in a particular application, which can potentially give them quite a bit of an advantage in terms of throughput and efficiency when compared to static instruction set processors such as a traditional x86 CPU. In this short introductory talk we will cover the basics of programmable logic devices and talk about the design, synthesis, simulation, implementation and programming cycles associated with FPGA projects.
Slides
Video
Available [here](http://skillsmatter.com/podcast/java-jee/a-brief-introduction-to-programmable-logic)

Concurrency.cc – parallel programming for makers and artists

Abstract
The concurrency.cc project describes itself as “a group of educators and researchers exploring the development of tools that make parallel programming more accessible to more people. Our hope is that concurrency.cc will serve the community of developers surrounding parallel and concurrent languages on the Arduino and other low-cost embedded platforms.”
Slides

Workshops

Tinkering with the Raspberry Pi using Erlang

Abstract
While not a new concept, Embedded Linux is becoming more and more popular with the barriers for entry being lowered by projects such as the Raspberry Pi. In this hands on tutorial we will design an Erlang powered embedded sensor node, running on the Raspberry Pi. We will take you through the steps required to build and deploy the Linux image, deal with hardware interfacing and backend connectivity.

Functional Embedded Programming on the Raspberry Pi

Abstract
This hands-on session will introduce how to do embedded programming using the Erlang/ALE framework created by Erlang Solutions.Erlang/ALE is an Actor Library for Embedded for the Erlang programming language targeted initially for the Raspberry Pi. It provides access to the various embedded interfaces (such as GPIO, I2C, SPI, etc) exposed on the Raspberry Pi from Erlang in a way that sits well with the Erlang and functional programming idioms.Erlang’s support for concurrency and functional programming is very well suited for modern embedded systems that consist of many internal and external peripherals (such as sensors and actuators).Most of the session is focused on using Erlang/ALE to do hands-on exercises with a custom extension board for the Raspberry Pi but a brief overview of the embedded ecosystem and what it entails to do embedded programming on devices such as the Raspberry Pi will also be presented.

Hands on Hardware Fun with the Raspberry Pi using Erlang/ALE

Abstract
While not a new concept, Embedded Linux is becoming more and more popular with the barriers for entry being lowered by projects such as the Raspberry Pi.In this short hands on tutorial, we will look at Embedded Linux and managing the hardware peripherals using Erlang, running on the Raspberry Pi. We will take you through the steps required to build and deploy the Linux image and deal with hardware interfacing.This tutorial will provide an overview of: - Current tools and methodologies employed in embedded systems - Embedded Linux and the ecosystem around it - Hardware drivers and interfacing - Erlang 101, focusing on features that are relevant to managing hardware - Erlang Embedded framework, a new proposal for architecting embedded systems

Interfacing the Raspberry Pi to the World

(A complementary workshop to the talk with the same title)