Civil Software Engineering

In which Joe introduces himself.

My name is Joe.

And I'm the newest full time member of Brand New Box. Like everyone else here at BNB, my journey into the world of software was very traditional and went exactly as planned. After working for a few summers as a mountain guide, I decided to go back to school to study civil and environmental engineering. For a while, I was quite happy with my classes and general life trajectory. But right when I least expected it, a new passion came out of left field to totally upend my vision for the future.

By way of a hydrology-related research project, I was introduced to Python for heavy duty data analysis and visualization. Enchanted by the seemingly endless possibilities of software design, I slowly began to explore this new and expanding world. The following months saw a chain reaction of self-teaching, tutorial mania, and building my first website from scratch. To put it simply: I was hooked.

Enter Brand New Box

Towards the end of a summer internship in Idaho, I stumbled across BNB's website while reviewing a list of companies that would be attending my school's fall career fair. After reading through a few blog posts about Final Friday outings and intern projects (shoutout to Clay!), I realized this was a very special group of people. Keen on gaining professional experience and too anxious to wait for the fair itself, I sent Nate an email to say hey and drop a link to my website. We met for lunch soon after I got back from Idaho, and I started the following week.

One of my favorite parts of working at BNB has been the creativity at the core of our ethos. In my view, few things embody this value more than the internship project. After working through some basic Rails tutorials, each intern is tasked with developing their own web application from the initial conceptual pitch to pushing the finished product to a hosted server.

Reflecting on my time as a mountain guide, I wanted to create something that would integrate my past experiences with the exciting new skills I was learning in software development. Influenced by past work in data visualization, I envisioned an app that would generate custom graphics from a user's GPS data. The app's name?

Contour

Much like the beginning of a construction project, I first had to take stock of the raw materials involved. In this case, my materials would be the the data that GPS devices track and save. Typically, geolocation devices record latitude, longitude, and elevation at regular time intervals. This bundle of geographic data is known as a track point and is recorded in extensible markup language (XML). The final product, a .gpx file, is nothing more than a looonnng list of these track points plus some helpful metadata for devices and online services. A little different than reinforced concrete, but manageable nonetheless.

GPXFile
The guts of .gpx %file!

Given the nature of their data, I felt .gpx files were particularly well suited to elevation profiles and topographic overlays. Implementing these involved getting my hands dirty with two exciting Javascript frameworks: Mapbox and Highcharts. As a complete novice in both Rails and Javascript, integrating these frameworks into my app was quite the challenge. But thanks to some help from my co-workers (especially Will!) and copious amounts of time spent perusing StackOverflow, I managed to carry the app through to production. As with most engineering projects, numerous issues arose that lacked a definitive answer. But whether you're designing a new water treatment plant or crafting your first Rails app, comfort with this ambiguity is an invaluable skill that can unlock some really innovative solutions.

Topographic overlay
All of a .gpx file's track points layed out over a Mapbox-supplied topographic chart.

While these technical aspects were fun to explore, my favorite part of this project was experiencing what it's like to develop in a collaborative environment. As a team of people from vastly divergent backgrounds, we all bring unique and complimentary approaches to the projects we create. From baijiu to Crossfit to the subtle art of concrete design, our respective knowledge domains intersect in ways that can yield novel (and occasionally hilarious!) insights into the challenges we face.

As I look forward to my future here at BNB, I wish I could speak to myself when I first discovered my love for programming. For too long, I was hesitant to commit myself to this new passion for fear that it would never amount to anything. But after 7 of the most intensely educational and exciting months of my life, I can confidently say that my fears were unfounded. Whether it's changing careers or learning a new language, intimidating goals are worth chasing to wherever they may lead you. And even if these goals evolve over time, the lessons learned pursuing them are valuable all the same.

No matter where my future as a developer takes me, one fact will forever remain imprinted in my memory:

The modulus of elasticity for steel is 29,000 ksi.