Oliver Roick2023-12-16T03:55:00+00:00https://oliverroick.netOliver RoickA2O Search2023-12-16T03:55:00+00:00https://oliverroick.net/links/2023/a2o-search<figure>
<img src="/img/blog/a2o-search.webp" />
</figure>
<p>Tom Denton introduces <a href="https://search.acousticobservatory.org">A2O Search</a>, a project I’ve been working on throughout the year:</p>
<blockquote>
<p>Today, we’re expanding this collaboration with the launch of A2O Search. This new sound search engine, built with Google AI, allows researchers and scientists to search through millions of hours of Australian wildlife audio collected by the Australian Acoustics Observatory (A2O).</p>
<p>Traditionally, researchers analysed wildlife audio by manually listening through hours of audio clips to identify an animal sound. This painstaking and laborious process posed barriers for research and has hindered land management decisions. Even with the introduction of machine learning tools for classification, collecting training data is an enormous undertaking and limits the number and kinds of questions that scientists can answer.</p>
</blockquote>
<p>I’ve worked on the front-end, which allows researchers to upload an audio recording to search for similar recordings in A2O’s database. The recording is visualised in a spectrogram and researchers can clip the recording to a five-second junk to narrow down the audio input. The results can be viewed and filtered by location, date or time of day.</p>
<figure>
<img src="/img/blog/a2o-results.webp" />
</figure>
<hr />
<p>The project also received coverage in Australian news.</p>
<p><a href="https://www.smh.com.au/technology/google-for-wildlife-sounds-huge-boost-for-conservation-research-20231127-p5en31.html">Sydney Morning Harald</a>:</p>
<blockquote>
<p>“What we have built here is a search tool to liberate the data collected in the field. Instead of trying to manually sift through what amounts to hundreds of years of data that we could not live long enough to go through, AI does it for us,”</p>
</blockquote>
<p><a href="https://www.abc.net.au/news/2023-11-29/qut-google-australia-a2o-search-audio-search-engine-wildlife/103158632">ABC News</a>:</p>
<blockquote>
<p>Researchers hope the audio search engine will yield important insights into where some animals go after bushfires and other natural disasters, and to better understand the impact of climate change and the spread of invasive species.</p>
</blockquote>
IMPACT Unofficial: New Tool Advances Algorithm Publication2022-08-03T07:33:00+00:00https://oliverroick.net/links/2022/impact-unofficial-new-tool-advances-algorithm-publication<p>IMPACT Unofficial writing about APT (Algorithm Publication Tool), a project I have been working on since the beginning of the year:</p>
<blockquote>
<p>APT is designed to support the unique needs of scientific writing by creating a high quality user-friendly authoring tool that generates PDF and HTML versions of final documents. Further development has added more user-friendly capabilities. An ATBD author can seamlessly add complex equations using LaTeX; track ATBD versions; and automatically number and label equations, tables, and figures. Document citations are provided for all public ATBDs.</p>
</blockquote>
A Shell Script to Create New Posts for Markdown Blogs2022-07-10T05:32:00+00:00https://oliverroick.net/learnings/2022/a-shell-script-to-create-new-posts-for-markdown-blogs<p>For personal projects, I like to keep things very simple. The blogs I write are published using <a href="https://jekyllrb.com/">Jekyll</a> instead of a more sophisticated database-driven application. That way, my stack will be low maintenance, and I can focus on writing.</p>
<p>In Jekyll, blog posts are managed via Markdown files in a specific directory. Each post has its own file. A <a href="https://jekyllrb.com/docs/front-matter/">front matter</a> included in each file contains metadata about the post, such as the title, publishing date, category, and desired layout. Jekyll looks through those files and then generates the site resulting in a set of static HTML pages that can be pushed to a web server.</p>
<p>There’s no user interface (unless you use <a href="https://www.netlifycms.org/">NetlifyCMS</a> or similar), so creating new posts can be cumbersome. You have to manually create a file, ideally name the file using a slugified version of the post’s title, and then add the preamble with title and the published date in ISO format and anything else your specific setup needs to render the post.</p>
<p>Being the lazy software developer that I am, repetitive and manual work is highly annoying. So I created a simple shell script that asks for the post’s title, creates the file using the slugified version of the title for the file name, and then pre-fills the preamble.</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#!/bin/sh</span>
<span class="nb">read</span> <span class="nt">-p</span> <span class="s1">'Title: '</span> title
<span class="nv">SLUG</span><span class="o">=</span><span class="s2">"</span><span class="si">$(</span><span class="nb">echo</span> <span class="nv">$title</span> | <span class="nb">sed</span> <span class="nt">-r</span> <span class="s1">'s/[\.\, \?]+/-/g'</span> | <span class="nb">tr</span> <span class="s1">'[:upper:]'</span> <span class="s1">'[:lower:]'</span><span class="si">)</span><span class="s2">"</span>
<span class="nv">DATE</span><span class="o">=</span><span class="si">$(</span><span class="nb">date</span> +<span class="s2">"%Y-%m-%d"</span><span class="si">)</span>
<span class="nv">DATE_TIME</span><span class="o">=</span><span class="si">$(</span><span class="nb">date</span> +<span class="s2">"%Y-%m-%dT%H:%M:%S%z"</span><span class="si">)</span>
<span class="nb">tee</span> <span class="nt">-a</span> src/_posts/<span class="k">${</span><span class="nv">DATE</span><span class="k">}</span>-<span class="k">${</span><span class="nv">SLUG</span><span class="k">}</span>.md <span class="o"><<</span><span class="no">EOF</span><span class="sh">
---
layout: post
date: </span><span class="k">${</span><span class="nv">DATE_TIME</span><span class="k">}</span><span class="sh">
title: </span><span class="k">${</span><span class="nv">title</span><span class="k">}</span><span class="sh">
description:
category:
---
</span><span class="no">EOF
</span>vim src/_posts/<span class="k">${</span><span class="nv">DATE</span><span class="k">}</span>-<span class="k">${</span><span class="nv">SLUG</span><span class="k">}</span>.md
</code></pre></div></div>
<p>This also automatically opens the new file in Vim so I can start adding content directly.</p>
<p>I invoke the script using make because I like the simplicity of typing <code class="language-plaintext highlighter-rouge">make post</code>.</p>