CyberFirst Engagement: Successful Completion of First Ever Summer Placement
27th August 2020
During lockdown Amiosec successfully hosted our first ever summer placement student, and it has been a great experience.
We began recruitment at the start of the year when we posted an advert on the CyberFirst portal in the hopes that we would be able to attract a student to come and work with us for several weeks over the summer on an exciting new project idea.
Shortly after lockdown was imposed, we started interviewing applicants, all of which were outstanding, but unfortunately, we were not able to offer them all a placement and so we had to whittle our list down to one. After lots of deliberation, we finally settled on one and were really pleased when they accepted our offer.
Due to the challenging circumstances this year, we heard that many summer placements were being cancelled and so we made an early decision to host the entire placement remotely to ensure that it went ahead. In terms of offering a remote placement, we had to tweak our original plans a little. The most important consideration was to ensure that our student would have all the equipment they needed at home and so we shipped them some development kit to use. Aside from that it was a case of scheduling daily calls with their supervisor and to enable them to meet employees and learn about the company we also setup weekly zoom lunches.
It was a great success but we will let our student tell you about the placement from their perspective:
“I’m a cyber security student currently between second and third year at university, and over the past 12 weeks I’ve been working on a summer placement project with Amiosec in the area of secure embedded development. This placement was part of the CyberFirst student bursary scheme, a government- and industry-backed career development program for students pursuing a career in cyber security. This has been my first year on the scheme and my first summer placement experience, and I can say it has been an overwhelmingly positive one despite the current restrictions which meant the placement had to be 100% remote.
The placement project involved trying out some embedded development with Rust to get a feel for the learning curve and the benefits Rust might provide for secure coding. Secure development is my primary area of interest in cyber security, and I was already keen to explore the Rust language, so from the start this placement was extremely well suited to me. This project also gave me the chance to write some low-level embedded code, something I’d been interested in getting started with but which hasn’t been covered thus far in my degree. This was an important factor in what made the placement such a positive experience – the project work was genuinely useful, but was also aligned very closely with my learning goals and the fact that I very much enjoy picking up new technical skills.
In terms of using Rust, I became comfortable with it very quickly, dispelling any concerns about a steep learning curve. I especially appreciated that the compiler and its error messages are designed to be helpful and clear – a refreshing change compared to the more adversarial process of working with some other languages. Rust also seems to have a very active ecosystem, with plenty of high-quality libraries available to make development easier, especially for embedded applications. Arguably, though, the main selling point of Rust is its memory safety, a major design feature which promises to eliminate various kinds of vulnerability-causing bugs. Despite the fact that Rust works differently than other languages I’ve used in order to achieve this while remaining lightweight and high performing, I rarely found myself struggling with its rules and restrictions.
Beyond the technical aspects of the project, I found working at Amiosec an incredibly positive experience – I appreciated the fact that there was always challenging project work available, but without any pressure to achieve more than was realistic. My feedback was regularly sought throughout the project and care was taken to ensure that the needs of the company were balanced with my personal learning goals. Additionally, to address the fact that I was working remotely, regular virtual social meet-ups were organised so I had a chance to meet people from around Amiosec and learn about other projects happening throughout the company.
Getting back to the Rust side of things, the first embedded application I created was a stopwatch program running on a Raspberry Pi. I was quite pleased to successfully complete this application, as it required implementing various low-level features, such as memory management, thread management and some device drivers, and ensuring these worked together. The video below shows my Raspberry Pi stopwatch in action:”
“Once I’d finished the stopwatch, I was able to experiment with implementing networked applications and create a simple web server. Getting a Rust embedded networking stack up and running required a bit of debugging, which gave me the challenging experience of digging into some relatively complex library code, although this was made easier by the fact that I found Rust quite expressive and approachable. Another key part of my web server application was a co-operative multitasking system which I implemented using Rust’s asynchronous async/await features, a recent addition to embedded Rust. Asynchronous programming was not something I had much knowledge of previously, so this was very beneficial to me from a learning perspective as well – I’m always enthusiastic about trying out different programming approaches.
Along the same lines, another sub-project I worked on involved investigating Rust’s procedural macros, a powerful meta-programming feature, one that enables writing code that writes code. This was another programming technique I had heard of but hadn’t used previously, so it was very interesting to me to explore this in practice.
Finally, at the end of my placement I gave a virtual presentation on my work to the whole company. This was perhaps the most challenging part of the placement as I have much more experience in programming than I do in presentations, so I was pleased to receive a lot of positive feedback as well as plenty of questions. The response from the company was especially encouraging as it highlighted the fact that my project work was something others at Amiosec found useful and were genuinely interested in.
Overall, the placement was incredibly successful from my perspective and I would be keen to pursue future opportunities to work with Amiosec and to use Rust for embedded development.”
Amiosec wishes our student all the best for the rest of their university degree. We are extremely pleased with how our first ever summer placement went, and have been very impressed by the calibre of students on the CyberFirst scheme. We are proud supporters of the CyberFirst scheme and look forward to continuing our engagement with them.