# Rayner, BAE Systems, and Cody

This week we’re very fortunate to speak with Rayner Saggers. Rayner is a Senior Systems Engineer on the F-35 Program at BAE Systems in the UK. That’s already pretty cool, but in addition to that, he’s a pillar of the MATLAB community at BAE Systems. He is the editor of the BAE MathWorks User Group newsletter, and he manages the BAE Cody Leaderboard.

Now that you’ve been introduced to Rayner, you may be wondering: What’s his favorite MATLAB command? How did he become such a rock star on Cody? What’s his favorite sport? So many questions… Read on, dear reader, read on!

Q. When did you start using MATLAB and Simulink?

A. The first time I touched MathWorks products was at university – over ten years ago now!… In my control systems lectures we had to derive the systems of equations for things like mass-spring-dampers or simple circuits; motor setups etc and then create the transfer function by converting them to the s domain. We would then test our maths by putting the coefficients in a Simulink s-function block and running to see the response. That was my first experience of Simulink for simulating dynamic systems. Now after that things went pretty quiet for a while until I started working for BAE Systems. The only other things MATLAB was used for in my classes was plotting data which when I think about new graduates coming into the company and advice on key skills we tell recruitment and academia just goes to show how far things have come.

Q. What sort of work do you do at BAE Systems and how do you use MATLAB?

A. My day job is as a Senior Systems Engineer on the F-35 program. I’m responsible for a virtual system simulator capability that is used to perform system/software integration testing in support of flight clearance. This capability (which is maintained in MATLAB and Simulink) reduces cost to the program by reducing the need for physical rigs and actual flight testing. It’s allows us to run the system beyond the aircraft design envelope without having to leave the ground and inject all manner of failure scenarios to enable us to develop a more robust system. This greater understanding is now paying dividends when it comes to fault diagnosis and enhancing those capabilities.

Q. Can you tell us a little about the MathWorks User Group at BAE? How did it get started? How many people participate? How do you interact with each other? How often do you meet face-to-face?

A. The BAE Systems UK user community started about 7 years ago after some of the key players met at the MathWorks Advisory Board (MAB) meeting. The different business units all had their own smaller communities but at MAB after bumping into each other a few times they concluded it would be a great idea to coordinate at a UK level as well. This led to the first UK forum event bringing the business units together and things have just grown from there.
Now we have reps in nearly all the UK businesses that make up the UK forum, it’s a pretty fluid list of attendees but with a core of about 15 members who coordinate on all things MathWorks who then take that information back into their business and share across our user base which is so much larger. We meet about 3-4 times a year at our different sites as well as with MathWorks in Cambridge. MathWorks have been key in helping to facilitate the UK forum and we work really closely with our account manager to develop a program of events that really helps the community thrive and get the most out of the toolset. Of course there’s email, teleconferencing and instant messenger too, but bringing people together really is what helps this community thrive and engage with the entire user base through the events we organise. My role in the Community is as the newsletter editor, bringing together news, events and key communications in a monthly digest that goes out to users. I also champion the use of Cody and the Onramp courses for self led learning.

Q. When did you first learn about Cody? What inspired you to get people at BAE competing?

A. It was actually you Ned. Back at UK Expo 2017 you gave the keynote on what’s new in MATLAB and took us through the potential of the text analytics toolbox and tall arrays. The example you gave centered around analysing Cody solutions to gain insight into what functions were being used by players across different score thresholds. That was the lightbulb moment for me. Here was this free learning resource that also had a competitive element to it as well, that a user could pick up and play as and when time allowed and could provide them with some real benefits when it comes to coding with MATLAB. MATLAB now has so much functionality it can be a challenge for people to know what’s the best function to use to achieve what they are attempting in a simple, understandable way. Cody gives you the chance to explore a problem space and come back and learn how to improve without the risk of failure like in our world of safety critical systems. I could see the potential benefits from promoting it among our users immediately. Competing against one’s peers adds another dynamic as well; a new user can identify people they can learn from or talk to for advice while others can compete for the top spot on the internal company leaderboard.

Q. What’s the story behind the Cody Leaderboard at BAE? When did you first create it?

A. After that 2017 Expo, the BAE Systems UK community traditionally holds a forum with the help of MathWorks. It makes sense the day after Expo as all attendees are already in the same place and everyone is energised from the Expo. I for one was excited about the potential of Cody and discussed this with the group and we all agreed that there was potential there. MathWorks offered to help us put together a script that would generate a simple leaderboard. I think I was one of the first five people competing among the user community so number 1 was a little more attainable back then! Shortly after that Expo I became the Newsletter editor, we’d been producing quarterly newsletters up to this point and I put my efforts into a more regular, monthly output while having the Cody Leaderboard at the forefront to share the challenge. Users responded by submitting their IDs and joining in. This was great as it showed the newsletter was really grabbing people’s attention, and getting in touch with the users through Cody was yet another way we were bringing our community together. Now it’s over a year later and I’m just struggling to stay in the top 10 out over 50 active competitors

Q. How has Cody been useful to your team or to other people at the company?

A. From first hand experience I can tell you that it’s been a really positive force within the community. From my position I get to hear a lot of feedback about how new users waiting for a date on a fundamentals course have completed Cody challenges and the Onramp courses as they’re instant access, and have been able to get stuck into their work. Elsewhere, people coming back from roles where they haven’t been using MATLAB for some time have found Cody a really good way to refresh themselves with the syntax. A lot of early careers placements rotate through my department and so I make it a point they’re introduced to MATLAB and Simulink and Cody is another facet to that introduction. Being self-led, Cody allows people to feel that sense of satisfaction and reward when they complete a tough problem and perhaps go back and revisit challenges to learn a better way of doing things. All this can happen without supervision so it allows the more experienced members of the team to focus on their work rather than being questioned over some of the simpler functionalities of the toolset. For the newsletter I’ve interviewed some of the consistent players to see what keeps bringing them back to Cody on a regular basis and they tell me it’s because it’s fun to challenge yourself with this gaming aspect being a real hook. I feel that as we get older this element of learning through play is something that we forget about. Working with safety critical systems makes us less risk averse so a safe space to make mistakes really benefits.

Q. You’re a problem author. Did creating a problem change how you look at problems as you solve them? Was it fun to watch people solving a problem that you created?

A. While I’ve only created the one problem it was a great experience and has given a lot of insight as well; I definitely want to create more. For tackling problems I have a better understanding of how the test suite is being used for verifying answers. This has been really useful for learning about the effects of rounding and truncation when it comes to the order of execution of functions and how this affects the precision of an answer. I also approach problems now with the stance that while there may be an obvious way that the problem author meant for the problem to be solved, that doesn’t necessarily mean there isn’t another, perhaps better, method. Sharing my problem among the community Cody players has been a good way to learn more about the community too, as an author you can see all the answers and their scores, (as well as receive a passive income of points if enough people do your problem!), this has allowed us to help steer tips and tricks and demonstrate the benefits of efficient coding. From my problem it became apparent that there was a group of users using simple logic and for loops etc whilst another group was using more of the inbuilt MATLAB functions and achieving scores three times more efficient. When you consider the work we’re doing in data analytics etc, these kinds of efficiencies equate to some big financial savings so we can target these people to help them continue to develop their MATLAB skills which are immediately transferable to their actual work

Q. What advice would you have for people who want to create interesting problems? What makes a good problem?

A. I think the most important thing to realise that becoming a problem author for the first time adds a completely new dynamic to how you can learn through Cody. In order to create a problem and share it with others you need to create a test suite to validate submissions and this is a completely different process to just submitting a problem solution and bagging some points. So paying attention to the opportunity to learn from the problem creation task is just as important as the problem itself.

When it comes to the problem itself, it’s important to have an idea in mind for the kind of person that’s going to be attempting it and try to appreciate their needs. Explaining any assumptions or your thought process in the problem description is going to help people identify any constraints that can be frustrating when not considered. Like data-types or precision. I was doing a problem centred around the use of the plot function recently and while visually my answer was correct, the test suite kept failing because the assertion was based on the graphics object I was creating and it had to have been produced a certain way to “pass” the test.

Q. Do you have any favorite problems or authors that you want to recommend to us?

A. I like to complete problems in challenge sets. Not just for the bonus points, but from a learning perspective they tend to be grouped around a functionality grouping etc so I can pick based on a goal. One of my favourite problem groups has been Project Euler by Doug Hull. Completing that set felt like a real achievement and I learnt a lot about how MATLAB as a higher level language can be so efficient when tackling a problem vs. a traditional iterative numerical method. Most of the problems in that set work on very large or very long sequences or combinations such as triangle numbers within the Fibonacci sequence where the pattern is very simple but to work it through to an end point using that pattern would use up the available memory. I also really liked the R2016b feature challenge when it came out, as I could point our users to it and say “Hey, check these problems out to get to grips with what’s in the new release”. I would really like to see something like that accompanying future releases

Q. Do you use any other parts of MATLAB Central?

A. It’s one of my main bookmarks in my web browser! MATLAB Central and the support pages are such a great free resource. MATLAB Answers is such a brilliant place to get information and see examples. I like having an extended community of people to learn more about how others are using the toolset.

A. Now that may sound a little strange as it technically isn’t a function like “delaunay” (see UK Expo 2017 keynote!), but I don’t know how much time I’ve spent puzzling over things in the past before going to the help and then not quite finding the function i was looking for only to come back later and realise it was being suggested to me from the bottom of the page. Other times I might look up the syntax or revise a function i’m using only to spend even more time reading around the function group this way. I’d liken it to auto-spooling of videos on streaming platforms or scrolling through social media except with more of a tangible benefit… and less cat videos!

Q: If I were a MATLAB function, I’d be  ____ .

A: doc!

It’s something I use a lot to check syntax and extended capabilities and as a member of our community, I think it’s pretty apt. I enjoy encouraging people to explore what they can do in MATLAB and people often come to me for advice on things they’re doing with the tool. I may not have the answers but we can talk around the problem and discuss approaches. Then if we’re still struggling I know that there’s a much wider community we can tap into for help as well.

Q. Are there any features that you would like to see in Cody in the future?

A. For sure! Cody is great, and I think in this respect is becoming a victim of its own success. There are now so many problems that it can be difficult to figure out which are ‘good’ problems. I know there’s been advances in filtering and groups etc but some ways of being able to search based on perhaps a function or capability would be great. Likewise I think we discussed before a kind of problem peer review system for when a user completes a problem to then upvote solutions to help people learn what a good solution looks like.

From a learning and development standpoint, I’d really like to see more companion problems for the training MathWorks provides (the new Onramp companion set is an example here). A lot of the time we go on training and learn all these techniques but can’t immediately put them into practice. A companion problem set allows you to use those new skills and keep them sharp. I’m borrowing from George R.R. Martin here but I’ve said before that an engineer needs Cody like a knife needs a whetstone!

Cody for Simulink. That is something that would be so great to see. So many people use Simulink and are really missing out when it comes to Cody!

Q. What’s something you enjoy doing that has nothing to do with engineering?

A. I’ve been a keen cyclist since about 2013. At work we have a Cycle to Work scheme that gives a tax benefit on bikes and equipment. I got my first bike (as an adult) on the scheme and started cycling to get fit and to lose weight. I then got into pro-cycling as a sport and it’s just gone from there really. Learning about the sport, from some of the most historical races to understanding the different disciplines and roles riders play within their teams is fascinating. Now I know the question said nothing to do with engineering but that side of things really interests me also. Just the advances in technology and the science of the sport is something that really interests me, whether that’s the biology side of things with the advances in understanding of training methods and techniques to the advances in manufacturing methods and techniques making something more aerodynamic or lighter or stiffer. Recently British Cycling unveiled their track bike for the 2020 Olympics and the technology in the development of that machine really is something to see. All the data, sensors, technology and level of integration is just amazing.

|