Please note that the code is an experimental proof of concept – it works, but obviously don't use it for anything mission critical!

Github code: https://github.com/jyjblrd/flowblocks
Live demo (desktop only): https://jyjblrd.github.io/flowblocks/

Introduction

One of my favourite parts about the computer science undergrad program at Cambridge is that, during our second year, we get put into groups and work with a company to implement a project over the course of about 6 week. My group was paired up with the Raspberry Pi Foundation, who tasked us with creating a visual programming language for microcontrollers.

We've now reached the deadline for our project, so I thought I might as well include our presentation video here since I'm quite proud of what we were able to achieve in such a short amount of time (especially since we had to balance working on the project with the rest of our studies).

What is FlowBlocks?

FlowBlocks is a flow-chart based visual programming language for microcontrollers – designed to introduce beginners to the basics of programming in an easy and intuitive way. We wanted to create a super simple way for people to jump into programming, which is why it's all web based. You just need to plug in your microcontroller and everything works!

Our presentation video which gives a full description of FlowBlocks and what it does:


Conclusion

This was an extremely fun project and I’m really happy with how it turned out in the end. We spent weeks working on designing the language’s semantics and building up the foundation of the project so that we could easily design and create new blocks, so seeing it all come together in the end was extremely satisfying. Most of the blocks seen in the final product were only created a few days before the deadline! But the foundation we built made it extremely easy to implement new blocks and expand the functionality of the language.

I went into this project thinking that Cambridge does it to improve our practical coding skills, but now looking back it’s clear that this was an exercise in teaching us how to work with other people. This whole project really was a bit of a social experiment: chuck 6 people that have never met each other into a group and tell them to create a product in the next 6 weeks. They intentionally didn’t give us any guidance on how to organise our group and instead just let us figure it out ourselves, which was definitely a challenging but fun experience. Writing code was by far the easiest part of this project – the real struggle was delegating tasks, managing people, and coordinating work so that it all fit together in the end. It’s a completely different experience to working in an organisation with a clear power hierarchy, because in this group project there was no team lead who had the final say. Instead, everyone had to argue their point to try convince the others to agree with them. It really was a fun experience and I’m proud of what we were able to achieve.

Credits

I would like to thank my team mates: Aaron Cruz, Peter Wild, Ben Stokes, Conall Moss, & Simon Richards.