GD
Geodynamics

Locking people up to program — or: “What is a hackathon?”

Locking people up to program — or: “What is a hackathon?”

This week the seventh yearly hackathon of the geodynamics code ASPECT is taking place. But what actually is a hackathon, why is it useful and how did it get started in the first place? This week, Wolfgang Bangerth, one of the founders of ASPECT, explores all these questions for us. Due to the intensity of a hackathon, he wrote this article before the start of the hackathon.

It’s really not possible to put this any other way: There is no worse time to describe the idea of a “hackathon” than the year of social distancing and cancelled travel. But I’m an optimist — that we will be able to have in-person meetings with our colleagues and friends again — and so let me tell you something about *in-person* software development!

The social side of software development

There is a public perception of programmers (“hackers”) as loners sitting in a dark basement with just their computer and no social contact. But that’s historically really not how a lot of software packages have come about, and it’s certainly not how I’ve wanted to do the software development I’m involved in: My first get-together with like-minded programmers was as an undergraduate when I picked up a couple of friends in my parents’ car in 1995 and we spent a day in my room implementing a Core War simulator for our own enjoyment. At the time, that involved loading tower computers and heavy monitors into the trunk, but at least we didn’t need mainframes any more.

Nothing really came of that project, but when I first started the deal.II project (a finite element library that is now fairly widely used throughout the sciences) in 1997, and then in 2011 with my friend and colleague Timo Heister the Advanced Solver for Problems in Earth’s ConvecTion (ASPECT), I spent many hours in the same room programming either together, or at least with someone who could be used as a sounding board for ideas and feedback. Both projects quickly found their way into the internet, where we have worked hard to build an online community of like-minded people who use, contribute to, and maintain these codes.

Hackathons

So it was not a stretch to think about how one could bring people from across the world into one room to work on code together — like a workshop in which the “work” (and not talks) is the focus. We had done that a number of times at deal.II Users and Developers workshops before, where we set aside some time for software work, but I had never run anything where the *software* was the principal purpose and the talks only ancillary. But sometime in 2014, I had a bit of money left of the support the Computational Infrastructure in Geodynamics (CIG) initiative had given us for the development of ASPECT. I thought of inviting a couple of fellow ASPECT-hackers to come to Texas A&M (where I was at the time) for a week to develop features we had ideas for. CIG’s Louise Kellogg (at the time CIG’s director) and Lorraine Hwang (who holds this position now) objected: They insisted on “doing it right”, to invite far more than just a couple of colleagues, and they put up the necessary funding. In the end, we had (I believe) 12 ASPECT users and developers who came together in one place for ten days and we made awesome progress: About one third of the development of ASPECT that year happened in those ten days!

The founders of the geodynamic modelling code ASPECT: Timo Heister (left) and Wolfgang Bangerth (right).

We have since called these events “hackathons”, tweaked their format a bit, and run them every year with similar outcomes. What we learned, in particular, is that it helps to get everyone away from home, including the organizers: There are just too many distractions otherwise. So what we have been doing is rent a large house with sufficient internet connectivity (and power outlets!) in some remote corner of the country, invite 20-25 people from around the world, and shut the door. With nowhere to go, and no obligations to family and home departments, this has led to amazingly intense — but also fantastically fun — weeks of people huddling around screens, batting ideas back and forth about how to implement this or that feature, implementing and reviewing code, and just generally being productive in a friendly and productive atmosphere. There are some logistical challenges to housing this many people in the same place and feeding them, but at least from a cost perspective, these hackathons are no more expensive than “normal” workshops and, in any case, they are far more efficient ways to develop software (and build a *community of developers*!) than any other way we know of. In particular, most of those we invite to participate are user-developers who develop features for their own work (and using their own funding), but who are willing to make them sufficiently general that they are useful to others as well.

How about now?

Of course, none of this is currently possible: If I were COVID-19, I couldn’t think of a better place to spread than 25 people in one house, locked up inside for the better part of ten days. So, this year, we plan on running the ASPECT Hackathon virtually. I have no doubt that the outcome — in particular, the community-building — is not going to be the same as in past years. But in the end, it boils down to whether people are willing to set aside the time and to focus on software development, and this has worked well with an earlier virtual deal.II-hackathon we ran in May. So let us see what we will all come up with in the coming two weeks (check this page to see our progress). In the end, I am an optimist, and so I am also already looking forward to meeting all my colleagues and friends again next summer for the next in-person hackathon!

Author bio

Wolfgang Bangerth is a professor of mathematics and (by courtesy) geosciences at Colorado State University. In 1997, he founded and is now one of the Principal Developers of the deal.II project that provides finite element functionality from laptops to supercomputers. In 2011, he also co-founded and has since been a Principal Developer of ASPECT, the Advanced Simulator for Problems in Earth’s ConvecTion, a software package for the simulation of convection in the Earth mantle and the dynamics of the Earth’s crust.

Before joining Colorado State University, he was on the faculty of Texas A&M University and a postdoc at the University of Texas at Austin. He received his PhD from the University of Heidelberg, Germany, in 2002.

He now lives in Fort Collins, Colorado, and plans on hiking one of the 54 peaks above 14,000 ft (4,200 meter) in Colorado during the off-day in the middle of the upcoming hackathon, to free the mind for the second half.

Wolfgang Bangerth is a professor of mathematics and (by courtesy) geosciences at Colorado State University. In 1997, he founded and is now one of the Principal Developers of the deal.II project that provides finite element functionality from laptops to supercomputers. In 2011, he also co-founded and has since been a Principal Developer of ASPECT, the Advanced Simulator for Problems in Earth's ConvecTion, a software package for the simulation of convection in the Earth mantle and the dynamics of the Earth's crust. Before joining Colorado State University, he was on the faculty of Texas A&M University and a postdoc at the University of Texas at Austin. He received his PhD from the University of Heidelberg, Germany, in 2002. He now lives in Fort Collins, Colorado, and plans on hiking one of the 54 peaks above 14,000 ft (4,200 meter) in Colorado during the off-day in the middle of the upcoming hackathon, to free the mind for the second half.


Menno is a postdoctoral fellow at UC Davis in the USA. He investigates the interplay between the crust and the mantle through numerical modelling, with a focus on the study of subduction zones. Menno is part of the GD blog team as an editor.


Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*