# BRCON 2020 TALK: ENERGY EFFICIENT PROGRAMMING IN SCIENCE 

I presented my thougts on scientific software development at [1]brcon
2020.  Full abstract:

    Numerical models are used extensively for simulating complex
    physical systems including fluid flows, astronomical events,
    weather, and climate.  Many researchers struggle to bring their
    model developments from single-computer, interpreted languages to
    parallel high-performance computing (HPC) systems.  There are
    initiatives to make interpreted languages such as MATLAB, Python,
    and Julia feasible for HPC programming.  In this talk I argue that
    the computational overhead is far costlier than any potential
    development time saved.  Instead, doing model development in C and
    unix tools from the start minimizes porting headaches between
    platforms, reduces energy use on all systems, and ensures
    reproducibility of results.

You can check out the slides and audio here:

- [2]slides (markdown)
- [3]audio (ogg)
- [4]slides+audio as video

The full conference schedule and presentation recordings are available
[5]here.

Brcon is the annual meeting of [6]bitreich, an initiative to promote
minimal and perfect programming and system design practice.  In a
nutshell, the philosophy favors simple and well-designed solutions
(e.g. C, POSIX, Unix) over convoluted and hyped software-development
tools (cloud deployment, docker, systemd, autotools, and so on).
The bitreich information site uses the WWW-precursor protocol
[7]gopher, demonstrating that information transfer can occur without
the ugly mess of the modern web that is html, javascript, cookies,
and trackers.  The conference was held virtually, but the minimal
and open standards used for conference participation is a perfect
example of the bitreich philosophy.

The presentations were displayed by [8]catpoint(1) which takes text
files and shows the content as slides in the terminal.  The audio
stream was publically broadcast via [9]icecast.  Each presenter
would stream their mic to the icecast server, for example via
[10]ffmpeg(1):

    ffmpeg -loglevel debug -f sndio -ac 2 -ar 44100 -i snd/0 \
        -codec libmp3lame -f mp3 \
        icecast://source:${pass}@bitreich.org:3232/live

The listeners would point a network audio client to this URL and
hear the speaker in real time.  For the slides, the viewers connected
via ssh(1) to a public guest account, automatically attached to a
multiplexed terminal session controlled by the presenter, and watched
the presentation in their own terminal with minimal bandwith
requirements.  Questions were communicated via irc.

The source code for my presentation is available [11]here.  The
[12]pointtools utility md2point(1) is useful for generating catpoint
presentations, as it reads presentations in markdown format, does
some light styling, and outputs catpoint-compatible text files.

It doesn't get more minimal, efficient, and perfect than that!


References:

[1] gopher://bitreich.org/1/con/2020
[2] gopher://adamsgaard.dk/0/pub/energy-efficient-programming.md
[3] gopher://adamsgaard.dk/9/pub/brcon2020-energy-efficient-programming-in-science-talk.ogg
[4] gopher://adamsgaard.dk/9/video/brcon2020-energy-efficient-programming-in-science-talk.mp4
[5] gopher://bitreich.org/1/con/2020
[6] gopher://bitreich.org
[7] https://en.wikipedia.org/wiki/Gopher_(protocol)
[8] gopher://bitreich.org/1/scm/catpoint
[9] https://icecast.org
[10] https://ffmpeg.org
[11] gopher://adamsgaard.dk/1/src/brcon2020_adc
[12] gopher://bitreich.org/1/scm/pointtools