Applying for the AusOcean summer internship is the best decision that I have ever made. This summer has been an amazing experience; I have learned so much, met some awesome and passionate people, and had unique experiences that I wouldn’t have had anywhere else. I completed software projects, electronics projects, as well as field work trips all with the end goal of providing more and better data to better understand our oceans, and the impacts we are having on them.
The first week of the summer consisted of a landslide of information, learning about the AusOcean core values, current projects and history, learning a brand new programming language in Go, and starting to investigate some small projects in the AusOcean repository. Looking back, these small issues that I was tackling which took hours of debugging and learning new concepts were really trivial changes that should have taken just a few minutes to change. However, I had gotten my first runs and the board and was ready to sink my teeth into a bigger and better project.
During my first AusOcean sync, I was introduced to Alan Noble, the passionate and enthusiastic founder and CEO of AusOcean. During this first meeting, I was inspired to truly make a difference, both at AusOcean, and beyond. It was also during this meeting where my co-intern Ella, and I selected our projects which we would work on over the summer. Alan’s excitement about a software based audio filtering system for incoming data from the hydrophones prompted me to tackle the project which I thought was well beyond my skill set. I also elected to practice my PCB design skills, and nominated myself to design a new PCB for the mast.
Once I had my projects, I was ready to grab a cup of coffee, put my head down, and smash out some work. It was slow progress at first, as I tried to apply the theoretical knowledge I had learned in my digital signal processing course at uni, into real functioning code in Go.
However, after a few days of research and programming, I had a functioning low pass filter. I was ecstatic, I thought I had conquered a whole summer of programming in just a few days.
I was wrong.
I had created my low pass filter by applying a window function to the frequency domain of the incoming signal. Whilst this filter was functional, it provided no way to control the cutoff frequency, or to generate any other type of filter. After many days of refactoring code, and developing new algorithms, I had implemented a working range of filters. Using a convolution algorithm, and some windowed sinc functions, I was able to create low, high, and band pass filters, as well as a band stop filter. These filters also provided control over the cutoff frequencies as well as the filter length (quality of the filter). It was in testing the filters that I discovered a fatal flaw, filtering the audio took exponentially longer as the length of the audio increased. This issue would prevent the filters from being used in real-time, eliminating a potential use case. This was also just a massive inconvenience, as it could take up to 12 minutes to filter 1 minute of audio. After some massive algorithmic improvements, namely using the frequency domain to multiply rather than performing convolutions, the processing time of the filters went from 12 minutes to just a few seconds, more than a 99% time reduction!
After developing the functionality of the code, it was time to create a graphical interface so that users would actually be able to use the code. This required more learning, this time HTML, CSS, and Javascript. This process was very rewarding, seeing a project I’d worked so hard on really come to life in front of my eyes. I’m excited to see how people use this tool, and how it can help citizen science and the monitoring and restoration efforts of oceans everywhere.
Once I had settled in and had some understanding of the current rig functionality, I was ready to start designing a brand new PCB for the rig. The PCB had some pretty straightforward design requirements, but I was excited to see my very own design come to life (I even snuck my name into the design). This PCB will allow the cables in the mast to be all terminated neatly, and will simplify the overall construction of the mast. The PCB was ordered and I eagerly awaited its delivery. Once it finally arrived (free shipping from China can take a while) I very quickly noticed a large design flaw, which shall not be named…
However, this issue was quickly resolved in an updated revision, which also fixed a few other issues. The new PCB is smaller than ever, and ready to be manufactured, assembled, and deployed in AusOcean rigs everywhere.
I was lucky enough to be able to go on a field work trip to Rapid Bay, to install a new underwater camera and bring back one of the two current AusOcean live streams. After a false start at 7am on Monday morning, we got out onto the water on Wednesday in almost perfect conditions. My main role for the day was to take photos and videos, and to provide moral support from the surface. Trek, Ella and I, the crew on the boat, performed important monitoring and data collection tasks using the ROV, which was such an unreal experience. I was also lucky enough to be able to go snorkelling beneath the Rapid Bay jetty, which was teeming with fish and colourful plants everywhere I looked.
Coming into the internship I had never programmed in Go, HTML, CSS, or Javascript, I knew nothing about how the rig worked, and didn’t understand any of the existing code base and how it all worked together. Whilst I’m no expert on any of the above still, I have learned so much in such a short amount of time, and am incredibly proud of what I have achieved this summer. I couldn’t have done it without the amazing opportunity provided to me by the team at AusOcean.
AusOcean is a not-for-profit ocean research organisation that supports open source practices. Open source approaches to tackling environmental issues means embracing collaborative tools and workflows which enables processes and progress to be fully transparent. A critical aspect of working open is sharing data not only with your immediate team but with others across the world who can learn, adapt and contribute to collective research. By contributing to, and supporting open practices within the scientific community, we can accelerate research and encourage transparency. All tech assembly guides can be found at https://www.ausocean.org/technology
Follow us on Instagram, Facebook or Twitter for more photos, videos and stories.
I'm glad your internship was rewarding. It was a pleasure having you on board, David.
ReplyDelete