As a percussionist, I find myself thinking probably more than most people about time—although what a percussionist means by “time” is more like “meter” or “rhythm” in common parlance. A drummer has “good time” if they can maintain a regular, predictable pulse—a “groove”— while still doing a whole bunch of unrelated things. It’s a skill, and an art too, because of course time is also a consensus among band members, one that the poor drummer must constantly manage and reinforce without being a jerk about it. Once you learn to listen for time—for regularity that is reliable and well communicated, but also flexible when needed—you will have a whole new appreciation for what the drummer is doing.
Unfortunately for drummers, it is a lot easier to write a constant-time crypto function than it is to learn truly great time—but no less important to the success of the programmer.
The question of what makes a successful programmer also emerges in this issue’s interview with Barbora Buhnová. Buhnová is a leader at the Faculty of Informatics at Masaryk University in Brno, Czech Republic, and one of the founders of Czechitas, a nonprofit organization aimed at making IT skills more accessible to women of any age. She believes the key to bringing more girls and women into tech is, first, about simply seeing value in different mindsets and problem-solving strategies and, second, about creating a critical mass that changes expectations. We need to go from “Nobody like me does this” to “I see lots of people like me doing this.”
This notion of time is what struck me as so interesting about this issue’s feature on constant-time cryptography. It turns out that a crypto implementation whose execution time varies depending on what you feed to it is inherently leaky. By looking at the inputs to a non-constant-time crypto function, an attacker can infer enough about the secret key the function depends on to guess the key, often trivially. Like a drummer who gets distracted by a solo and rushes or drags the time, the crypto function reflects back information about the secret it is protecting. Unfortunately for drummers, it is a lot easier to write a constant-time crypto function than it is to learn truly great time—but no less important to the success of the programmer.
The same principle applies to AI and machine learning, which is becoming not just an area of interest but a requirement across multiple disciplines. In his piece “Making machine learning accessible across disciplines,” Red Hat engineer Marek Grác talks about designing the Applied Machine Learning course at Masaryk University. “We wanted to give students an opportunity to learn new things without getting into a routine of simply opening an editor and coding something, so we had students creating annotation guidelines, fixing bugs in existing source code, trying to create better rules for simple games, creating chatbots, or trying to figure out which parameters might influence whether a person will get a mortgage,” he says.
In other words, learn to do what you need to do without having to turn yourself into a full-time programmer. As the use of programming and AI becomes more and more common across disciplines, this approach is going to become the more common one, I think. Courses like Marek’s represent a great start.