What has been your favorite project to work on so far?
My favorite project to work on so far? I’d say that would be developing BioFabric (www.biofabric.org). It involved out-of-the-box thinking. When I joined ISB, everybody was complaining about how biological networks visualizations were completely incomprehensible “hairballs”. That made me think, how does one actually do this? I eventually hit on the idea that instead of showing nodes in the network as points, you can turn them into parallel horizontal lines. Then you make all the edges parallel vertical lines, so they are organized and understandable. When you do that, you can see the network structure very cleanly and the hairball problem goes away.
That’s so cool.
What I find hard is that I published it in 2012, but it has never really caught on. For the visualization community to embrace it, I should have published it in a different venue. It sort of sank beneath the waves. I thought people would go look at it and say, “Hey, that’s really cool! You can actually see networks very clearly as opposed to this giant mass of edges and points!” But people are still showing and talking about hairballs, and BioFabric hasn’t made a real big dent.
Before that, my second most enjoyable project was BioTapestry (www.biotapestry.org) which is a way of visualizing gene regulatory networks. That project was the reason I was hired at ISB. Hamid Bolouri, who was a professor here for a few years, worked with Eric Davidson down at CalTech. Eric Davidson was one of the premier developmental biologists of his age. He and Roy Britten postulated in the early seventies that genes would be regulated using cis-regulatory DNA sequences that sit next to the gene, and this would be used to turn them on and off. Eric went on to show how this mechanism of genes controlling other genes would work together as a network to create control circuits. So that is how a single egg can turn it into a complex animal. It’s all encoded in the gene, and specifically with transcription factors binding to cis-regulatory regions next to a gene and turning it on and off. The cis-regulatory sequences of the genes are what basically determine how the whole animal is laid out. One transcription factor will turn on in one region, and another transcription factor will turn on in another region, and that turns on different sets of genes. So in one region, you make a skeleton in the other region, you’ll make the gut.
Eric Davidson studied sea urchins, and was doing experiments to find out what transcription factors turned on what genes, and when and where that was happening. Out of these, all these experiments emerged a model of a gene regulatory network for the sea urchin embryo in the first 30 hours of development. This is all very complex, and you’ve got all these things going on and you want to be able to record it and describe how that system’s working. So they hired me to build BioTapestry, which is a tool to allow the developmental biologist to model and visualize these networks. It shows the genes that are responsible for the development of the organism, and how one controls the other, and how progresses, hour over hour. What genes are turning on, where, and what they are then turning on. It’s a really complex system to keep track of. With BioTapestry, you can see what’s happening, and spot places where things are inconsistent. If some gene has exactly the same inputs in two different regions, but behaves differently in those regions, then you are missing a piece of the puzzle. That leads to experiments, which can answer the question. So it’s interesting working with the developmental biologists to help them understand their system and show further areas for research.
Hamid Bolouri hired me here to build that tool. I was working on that for about fourteen years here at ISB until about 2017. That was great, and I really enjoyed it. I used to work at Boeing as a loads and dynamics engineer. With that job, you tell the engineers who are designing the aircraft structure what the expected loads are when you slam into the runway or the wing flaps up and down because of gusts. They need to know how strong to make the aircraft structure. So you do wind tunnel tests and computer modeling to figure out the air loads on the wings, or slam the plane into the runway on a computer. That’s what I did at Boeing, where I worked on a tiny little part of this giant project. But with BioTapestry, that was my software. I completely built the whole thing from scratch, and it was fun.
BioFabric actually grew out of my work on BioTapestry. BioTapestry made me think about different ways to show networks, and made me start to think about showing nodes as lines, which is the novel approach that BioFabric uses. So one thing followed on to another. And I am really fascinated by network visualization problems. Unfortunately, with funding from NIH, you need to get grants to work on things, and I could not get further grants to keep working on that. So now I work to support cancer research by developing software to host cancer research in the cloud with the ISB-CGC.
What’s the biggest piece of advice for someone that’s looking to go into software development or software engineering?
Oh, good question. I was trained as an aerospace engineer, and then I went off and studied software, getting my master’s degree in computer science and engineering. From there, I went and worked in a company that developed 3D visualization of office interiors. I helped to build a tool that allowed furniture salespeople, who were sort of notoriously anti-computer in the 1990s, to sit down with the customer and work through how they wanted to lay their office out. Working on that, I became a semi-expert in modular office furniture. Then I worked on a tool that modeled business processes. Then I went and worked on a tool to manage storage area networks. From there, I was hired here at ISB to work on network visualization for gene regulatory networks to explain the developmental biology of sea urchins. The thing about software engineering, what’s fun about it, is to some extent the domain you’re working in. Learning about office furniture, sea urchins, and network visualization is the really interesting part. Working on business processes, not so much. So if you want to study software engineering, find a domain, such as machine vision, which is interesting to you. With BioTapestry, I get to work with developmental biologists, which is fun and interesting; it’s not just writing the software. Think of software as a means to an end. It’s a way of doing something interesting, of helping people. The one thing I wanted to do, even as an aerospace engineer, is help to build tools, like spacecraft, to help science and scientists. Here at ISB, I get to build software to help scientists visualize their work, or make discoveries. I think that’s really what makes it fun.
You’ve talked about how you switched from aerospace engineering to computer science. Do you have any advice for others to help find their passion and have you ever faced doubts about if a particular shift is the right one?
Whatever you study in college, you’re not gonna be doing it in 25 years. I went into college and studied aerospace engineering, with an emphasis on space, and 20 years later I’m working on sea urchins. What I found with college is it helps you to think and problem-solve. It’s all about learning problem-solving skills. Understanding that, “Hey, you throw me some problem and I can figure it out”, and building that internal confidence that you can figure your way out of something. You’re confident that you know that with software engineering, you can figure out the data structures and the algorithms you’re going to need, and how it all hangs together. Just that sort of ability to build a system, knowing how to do that is what college can teach you.
When I studied aerospace engineering, it was interesting. But when I got out into industry, it didn’t really fit with how I like to work. I like to work on smaller projects where I can have the overall picture of how it all hangs together, and software engineering allows you to do that. With aerospace engineering, you are working on a tiny part of a huge project. So, I got out of college and started as an aerospace engineer, and discovered pretty quickly that it was not what I wanted to do for the rest of my life. So I went back to the UW as a “fifth year” student. I needed to do that to get into the Computer Science program as a master’s student, to get some computer science background. During that year, I studied all sorts of stuff. I was also taking astronomy, geology, and even a philosophy class, which actually was elementary logic and proof, which helped for computer science. After all that, I still settled on computer science, because you could do lots of things with it.
So your question was basically how to choose your path. I just heard somebody a few days ago say, “if you’ve got a choice, choose the thing that will make the most change.” Interesting advice, but I don’t know if that fits me. I had the choice of leaving Seattle for my master’s degree, but decided to stay.
Just remember that as you make these decisions, it’s not as if you can’t change your path later. When I did my undergraduate studies, I could choose between computer science and aerospace. I was very interested in the space program, and that helped to motivate me. It helped me to put up with all the stress and hassle, because space travel was really interesting. That got me through college. But when I got out of school and discovered it meant working on a tiny piece of a huge project. Computer science allowed me to work on small projects, and so I shifted back to that field.
So the way to approach this is to remember that you’re never closing doors; you can always change your mind. If you’re getting a technical education, it’s applicable to a lot of different fields. I didn’t study biology in college. I had one class as a fifth year student. But here I am in biology.
What was your dream job when you were younger and how does that compare to where you are now?
When I was a kid, I was really into photography, and I considered becoming a professional photographer instead of doing aerospace engineering or computer science. And studying photography versus engineering is clearly a big choice. But in high school, I did volunteer work for the local weekly news magazine, and discovered early on that going around and taking pictures of people shaking hands and smiling was not exactly the most fascinating thing. So I gravitated towards engineering. And I was fascinated by the space program from a young age.
One thing about being interested in science and technology is, do you do engineering or do you do science? I am very much an engineer type. The way I think of it, if you’re a scientist, you’re interested in probing nature and doing experiments to find out how nature works. This is in contrast to an engineer, who is more interested in building things. I never really wanted to be a scientist. I decided I wanted to be an engineer and I’ve always been an engineer. I was an aerospace engineer, then I was a software engineer, and I am still a software engineer. But the common thread between those two is that I do engineering to build tools that scientists use. That’s what I’ve always wanted to do. I never thought I’d be working to support cancer research, but it’s interesting too. You can always find something that is interesting to build, unless it’s a system to do tax preparation.
What’s your biggest prediction for the computer science industry? What impact do you think computer science will have on careers in the future?
Everybody should learn a little bit of computer science, just to understand that when they sit down at a computer, they have some idea of what is going on inside the box. You always want to feel like you’re capable of handling something. If you work at a computer, you should feel like you can master it.
And what’s your biggest prediction?
I think AI is way overhyped. I mean way overhyped. I think it’s great for when you have a limited domain, like image interpretation. But the whole concept of “it’s gonna take over the world” is misguided. Back in the eighties, when I was looking as to whether I was going to go back and study computer science, AI was a big thing at that time, it was going to change the world. But AI has been ”going to change the world” since the 1970s. It is doing quite impressive stuff now, but still it’s operating in a very constrained domain. I decided that what I wanted to do was make software tools that allow people to do their jobs better. Basically provide them with information, through visualization, to give them the ability to use their insight and do things with that information. Allowing computers to assist humans in seeing things differently as opposed to making computers that would replace humans. I think there’s an element of human intelligence where AI is just way, way missing the mark. I’m not a fan of it.
For example, I am not a believer in self-driving cars. I just don’t see it happening anytime soon. There’s too much dynamicism to be able to make decisions quickly with limited information. I just don’t think a self-driving car can decide if that dark shape is a pedestrian and it needs to violently swerve to avoid killing somebody. For me, computers are all about keeping the human in the loop and augmenting human capabilities as opposed to replacing people entirely. That’s what happens with aircraft. They have autopilots for the boring stuff, but ultimately, when the chips are down, you have to have the pilot in the loop, flying the plane. So I think that self-driving cars may eventually arrive, but it’s not going to happen anytime soon.
“ …software in and of itself is a means to an end. It’s like a way of doing something interesting. Of helping people. The one thing I wanted to do, you know, even as an aerospace engineer is help to build tools like spacecraft to basically help science and scientists. ” – Bill Longabauh