Bugs and Baffles

This blog was contributed by Colton Paul, an intern in the Graphical Users Interface Group.

Getting Into the Flow

Having just graduated out of state at NYU Shanghai and missing the desert something terrible, I found myself back in New Mexico asking the usual question: “What now?” During college my interests jumped around from computer science to physics to math and back again, but I accepted that I would have to settle for only one of those interests at a time. Luckily, I got the chance to meet up with a few Flow Science engineers who convinced me otherwise by describing a computational physics company right here in Santa Fe. I applied for a GUI internship the next morning.

Starting my internship at Flow Science, I was faced with a coding language and libraries that I wasn’t very familiar with, but after a couple weeks I started to get the hang of it. To ease me into our development technologies, my initial task was to take code that I wrote as part of the interview process and build a GUI to interact with it. This would be the first of many examples where I would need to ask myself, “Did I write my code such that it could be extended and reused?”

Colton Paul, Flow Science GUI Intern
Colton (front) reacclimates to Santa Fe’s elevation on a hike with Nathan LeBlanc (the crazy one in back wearing shorts!), CFD Engineer.

At the same time, I was given a copy of the whole UI code repository to play around in, break, and explore. And when I say “explore,” I mean it. I still find large areas of the code that I haven’t seen before. The code’s size and complexity was daunting and vastly different than college projects where I could easily familiarize myself with every aspect of the repository. FLOW-3D has been a work in progress for decades and compelled me to change my mindset from coding something that works well now to creating something that can still work many years from now. As I started being assigned small tasks in the code, the moving pieces began to come together. I went from needing an hour to change a label to being able to confidently solve some interesting problems in the software. Before long, I was integrating into the workflow of the team and getting into a weekly rhythm.

A Week in the Life of a Flow Science GUI Intern

Mondays kick off with a warm cup of coffee and some of our License Administrator, Joyce Jensen’s delicious baked goods to fuel my morning. The GUI group gets together and discusses questions that came up during the week before and what we need to accomplish to stay on schedule. The meetings are more akin to conversations than instructions, and being a small team, everyone’s able to voice their opinions on designs and plans.

I continue working on various tasks in the GUI. Some of them are simple fixes, but others are truly puzzles, and solving them is as satisfying as placing the last piece in a jigsaw.  Of course, for every solution there are three better ones, which is why it’s nice to have mentors push me towards the better ones. The four senior members of the team alternate mentoring me and my fellow intern, Danya Alrawi. Each has a slightly different style of teaching and working, so by the end of the internship we’ll have picked up some unique tips from everyone.

My favorite problems extend beyond software engineering; they’re the ones that require knowledge of the physics that FLOW-3D simulates and why there’s so much communication needed throughout the company. Calling senior CFD engineer Dan Milano and stopping by VP of Product Development John Ditter’s desk is well ingrained into my weekly routine. “How does our physics engine simulate boundary conditions in cylindrical coordinates?” “Which of these options is more intuitive for users simulating valves?” “We have a bet on how mesh blocks work. Please settle it for us!” Question by question, I start to understand what FLOW-3D is capable of and see the bigger picture behind some of my small tasks.

Although one learns a lot through practice, the team makes a point to stay sharp on software engineering theory. My favorite part of the week is getting together for a “Lunch and Learn” where someone on the team presents a software engineering concept, and everyone eats and discusses. Being out of school, it’s a nice change to get some free lectures.

Once I’ve shut down my computer, the next steps depend on the day. Almost every week after work some of the Flow Science crew hit the field for some casual soccer, which serves as an important reminder of both Santa Fe’s elevation and how necessary it is for me to run a bit. Fridays on the other hand are for pulling out the Wii U and letting the day’s frustrations out on Super Smash Bros or hanging out on the patio when the weather demands it.

Moving Forward

I’m just over halfway through the internship, but I can confidently say that I’m a better software engineer than I was two months ago. I’ve appreciated the opportunity to work in this environment and the saintly patience required of my mentors and coworkers to address my endless questions. I’m looking forward to discovering what the rest of the internship will bring.

Editor’s Note: Colton will be joining the GUI group in January 2019 as a full-time Software Engineer, where he will not only make great contributions, but will continue asking his co-workers questions.