As part of my business travel over the years, I've been fortunate to visit the UK several times and meet folks from BAE Systems. Specifically, I've met people from the MathWorks User Group at BAE. This is a special group of people. They are senior and highly-skilled professionals, they make regular use of MathWorks products, and most importantly they have a bond of friendship that keeps them talking, sharing ideas, and solving problems (and drinking beer). This connection has allowed them to be incredibly productive, because there's always someone in the group with the experience or expertise needed to work through whatever issue comes up.
Regular readers may recall that I've already featured an interview with Rayner Saggers. This week it is my pleasure to introduce you to Chris Armstrong from the submarine group at Barrow. Chris is a Principal Modelling and Simulation Engineer, and he writes a regular Tips 'n' Tricks column for the MATLAB User Community newsletter at BAE. I can vouch for the fact that his columns are informative and insightful (I've learned something new every time I've read them) and very well researched. You'll see from his answers below that it takes time and effort to write material like this. Which of course is why it's so valuable. It unlocks value for all of his readers, and so it makes them better engineers and it makes the overall organization that much stronger. I'm delighted that Chris has generously agreed to answer some questions for us.
A. My first encounter with the wonderful world of MATLAB was the first year of my systems engineering course at Loughborough University in my Digital Signal Processing course. We first learned about how tones are made up of multiple frequencies and how traditional phones would create the dial tone for a phone number by building up the number using a collection of tones for each phone number. The next stage was to build this up to creating music. We were given the frequency information for note C, and we then built on that to be able to play the song "House of the Rising Sun." I'll be honest, at that stage of my MATLAB career I didn't have the same enthusiasm I do now. Learning from lecturers was never very effective for me so it wasn't capturing my interest back then. It wasn't until I started working in industry that my attention was caught by MathWorks...
A. My engineering career started at Leonardo (they were called Selex Sensors and Airborne Systems back then) in Basildon after I started searching for work experience that I could do during the summer between each academic year of my course and also during my industrial placement year (as a piece of career advice to any new and upcoming engineers, doing this and working in industry to get that practical experience - 2 years worth in my case by the time I finished my degree - will do you well). As a result of that career experience, I was sponsored through my degree and more importantly got to experience formal training by MathWorks trainers (it was in fact Sonia Bridge that did all my foundational training in MATLAB and Simulink - although all trainers are awesome!).
My early career at Basildon mostly revolved around systems engineering and image processing applications - a field I really love because it's so satisfying processing a noisy image but ending up with a target detected box around the object of interest! After 5 years at Basildon, I moved to the Edinburgh site because I wanted to be closer to my family that live in Perth. One of my favourite projects there involved the design of a platform protection system. We modelled everything (from platform motion compensation, atmospheric effects and then all the functionality involved within the protection system) in MATLAB and Simulink. From that design model we then used automatic code generation to deploy the functionality to the target processor. It was great developing that whole process from requirements to a model, to test, to processor in the loop and ultimately code generation! As a result of that project, the project was a massive success for the business and I did everything I could to promote the capabilities and the processes of MATLAB internally which eventually led on to the formation of the Model Driven Engineering, Modularity and Reuse department within Leonardo.
After a 2 year stint as DOORS requirements engineer (let's just gloss over that!) I moved to BAE SYSTEMS Submarines in Barrow. Here I got the opportunity to lead a team where we created Simulink models in order to help us work out the processes involved with the control of a submarine. It was a fascinating project and very satisfying, we started with a blank sheet and built up one model at a time until eventually we had enough to simulate a submarine planning and then doing a depth change. We even had some animations which gave us that positive feedback to show we had worked it out correctly. This then became the primary means of communicating with both the design engineers as well as to our customers.
During this time at BAE SYSTEMS I also became a member of the UK wide MathWorks User Group, a pan-UK, grassroots organisation with 2,000 members with the key goal of sharing knowledge and experience as well as to promote and represent the capabilities of MathWorks within BAE SYSTEMS. I now chair this group whilst also leading the Submarines MathWorks User Community with 400 of its own users and I take a key role in terms of organisation and delivery of training, sharing knowledge and best practice as well as encouraging the adoption of MATLAB.
My latest role involves using primarily Simscape with Simulink in order to do performance assessments, I also juggle working with the engineering function and MathWorks Training Services in order to schedule courses for our engineers.
That's Chris on the left
A. As I mentioned, the MathWorks User Group is pan-UK so we used to arrange meetings three times a year to get together (these would typically align with MathWorks events such as EXPO and MAB) but with COVID-19 we've gone virtual and actually increased from 3 day-long events to 9 afternoon sessions distributed across the year. We use our meetings to share our experiences, usually good ones to use as a basis going forward but equally the not so good too because they are still valuable lessons to learn from. As a team we are working on exploring new technologies. For example we recently got access to the Atlassian platform and a Jenkins automation server. We then work out how we can best use and share these facilities.
I didn't know anyone from the User Group when I first arrived at BAE Systems in 2017, but I quickly felt at home with people that shared my passion for anything MathWorks. Whilst we've got our primary bond through MATLAB - we all really prioritise a social connection. We've got an active WhatsApp group, MATLAB is probably the minority of what we talk about! Usually it's either beer-related or talking about cool tech we've seen, or possibly reminiscing about good times (almost always involving beer) - I really should try and run the text analytics toolbox on our chat… I wonder what it would reveal …
It's so helpful having great friends when trying to build, maintain and grow communities. Then of course there’s the benefit of having a network across the UK - it means I’ve got a bigger network of contacts to seek advice from whenever I’m in need of support, or trying to help someone else find a knowledgeable person!
Believe it or not it was actually all because of you in a round-about way! I was at MATLAB EXPO and in your opening talk you were reflecting on the new(ish) data types of categorical and table (and timetable). It hit me like a steam train because I hadn't heard of these so I took it upon myself to try and learn about them. I started with reading the documentation, which was a good start because it was interesting but I wanted to work out how I would apply it. So I thought up a scenario: I would use a timetable as the way of creating a log of sensor measurements and then started to dabble with how I can use the features being mentioned in the documentation. As I was doing this, I was writing the story with code as I went in a MATLAB Live Script. Once I got to the end of my little discovery and experimentation I thought to myself two things:
1. Timetables are cool and powerful.
2. I wonder if anyone else would be interested in what I've learned?
So I decided to flesh out my Live Script and story a little more to make it even more relatable and easy to digest, this was then the basis of a newsletter blog out of it.
It was amazing the feedback I got: we've got so many new users of MATLAB within Submarines so they really enjoyed this "guide" and then I started getting requests for other topics. When sending out emails to the mailing list, it can be a little like talking into an abyss because you almost never get any response - but when you get 20-30 people reply (out of now 400 on the mailing list) that's a massive engagement!!
I shared my experience at an industry wide event, the MathWorks User Communities event where the feedback from other major companies such as Leonardo, Shell, Rolls-Royce etc. was also of great interest and support.
A. That's really hard to pin a number down because I typically write up my articles over many days and sometimes weeks when I get a bit of spare time between the day job. I'll talk you through my process though …
The first step is of course deciding on what the topic will be - thanks to your MATLAB EXPO speech I had already decided that my first article would be about timetables.
The next stage is to start learning everything I can about what tables are and how to use them. Brian Douglas did an explanation of how he learns about a topic when he needs to do a tech talk and I try to use that same approach. My first starting point is the documentation that I mentioned, MathWorks often also ship examples with MATLAB which can help with trying to get a concept to sink in. At this point I will probably spend a few hours to a day on this.
The next bit can be quite tricky. To try and make a tips & tricks article you need it to be relatable, so this is where you need to come up with a scenario on how they might be used. Again, I had decided that using the timetable format as a record of sensor measurements. Other times this can be really quite challenging when it involves a topic I’m not familiar with, so this part of the process can easily take a few hours over several days at a minimum. But if you were to ask me to write an article I'm not familiar with, say Object Orientated Programming, I think it could spend days or possibly even weeks trying to figure this part out.
So by this stage, we've got a relatable scenario and we now have a topic we are interested in exploring, now it's a case of building up the story - a little bit writing a novel in a way because it needs to all hang together and develop in some natural order - and write the code to go with it. Honestly this is the fun bit!! I've started to using a Live Script here because it's very easy to separate the narrative (as normal rich text) and the code that does the stuff I'm trying to demonstrate (MATLAB code).
This stage can take up to a day or so, because I'll go ploughing on with my story, building code, but then I might discover a new way of working - so with tables, to get a subset of the source table you could iterate through and get each piece of data you need, or if you use one of the variables (fields) as a index such as a categorical, that can help make the code more efficient and elegant. When this happens you then need to go back and possibly rewrite your narrative.
A. Yes it has! I'd generally describe myself as having a fairly broad range of MathWorks knowledge without being particularly expert in any one area. So part of writing these articles I am actively exploring new ways of working or discovering new techniques. I'm very open to getting feedback on my code because I'm so interested to learn and I'm sure there must be better ways of working. Sometimes there are ways of using MATLAB that make you think "that shouldn't even work" but alas - it does!!
Hopefully what my audience are finding is that I'm able to find relatable and digestible explanations of technical topics, but in every article, or even every interaction i have with people asking for advice on how to use MATLAB, there's always at least a small element of self learning because no two problems are the same so everyone is using MATLAB in new and novel ways.
The first thing is finding your users. Fortunately within BAE SYSTEMS we have licence servers that some friendly IT contacts can give me the logs to, and even more fortunately I have a very talented data scientist friend (Ciaran McAndrew) who has built a tool to assist with analysing the log files. This gave me a list of all the names of people using MATLAB.
The next thing I did was to build up a mailing list and start building a relationship with these people by getting to know them. This is where I possibly started behaving like an internal consultant, informal mentor or teacher by listening to them about their work and what they need to do and then hopefully find ways that MATLAB could help. I would then also help them out on this journey by building prototypes and examples to get them going and hopefully inspire them with what can be done and how easy it is.
After this initial engagement it is important to keep the communication going, so one thing I would do is to send out a regular communication to the community to keep them in the loop of things that are going on and explaining how it might be of use to them.
Finally you want to build the community and establish a true network, so my final advice is to set up a regular (monthly) meeting with representatives for the various teams of MATLAB users. Mostly this is about sharing information about what is going on in the business such as training, but we also have a little "tek talk" where we share information about things we are working on, how we are solving our problems in MATLAB or discussing a key piece of best practice.
A. There are three main areas I've used:
1. The blogs. I always love the blogs because there's a very casual introduction / discussion about a topic (the more informal language used means that when I'm googling a problem blogs and forum questions are what come up). The blogs also often have a deep dive into some very niche topics which is just fascinating to read about how MATLAB can be used.
2. The forums.
3. The File Exchange. Just like the forums are often a source of inspiration for solutions to problems, so is the File Exchange because people have posted files to common tasks that they have worked on. I've also used this as a learning opportunity because when I've looked at some code it has encouraged me to do some investigation into why and how it works which has hopefully improved my own code writing abilities.
It's only appropriate that a submarine man should make this his hobby...
A. For me my biggest passions are travelling and going scuba diving. I love exploring new places, seeing new sights and trying new food. We've been lucky enough to travel to some wonderful places, some of the most beautiful places we've been have been the islands of the Carribbean such as Curacao, St Maarten's and Klein Bonaire, for somewhere a bit closer to home I would recommend Croatia.
When scuba diving there is nothing I love more than getting in wrecks and exploring caves. Seeing all these places and living these experiences made me want to document it, so I started getting into videography. I started by buying an underwater video camera and documenting my dives along with blog writing. This then grew into a bigger passion where I then took a step into wedding cinematography which was a wonderful experience but incredibly hard work!
As part of my family, I have a beautiful and amazing wife Charlotte who has supported me doing everything I've ever done (and planning to do!), I also have a fur-son! My beautiful Labrador Cooper.
I'm also a new father: my daughter Isabelle is now the second woman in my life that I love more than anything else in the world and now we are expecting our second. Since becoming a father, my life has completely changed to revolving around my daughter (and future son!)
To leave a comment, please click here to sign in to your MathWorks Account or create a new one.