Coding Experience

I’ve been coding since 1990. I have always loved it, and it became a thrill to see how I could put code to use for my day-to-day life while in college.

Early Years

GW-Basic

My first programming experience, in the year 1990. Many hours were spent copying the demo programs from the spiral bound user's manual.

QBasic

Many programs made using this language throughout the 90s, including graphical games, logic puzzles, and random projects.

Linux

I know, it's not a coding language, but still an important part of my upbringing. I originally watched my brother install Mandrake 98 and was highly intrigued; it took a few years before I was brave enough to run Linux on my own hardware. I have been running Linux on my daily driver since 2010, but I still have to use both Mac and Windows regularly to diagnose issues on various projects.

2000s

Visual Basic for Applications (VBA)

I was first introduced to VBA during my first semester of college, where it was part of a formal course. I quickly found it to be a powerful tool, especially for projects involving data manipulation and reporting, thanks to its tight integration with Excel. I ended up using VBA extensively across many assignments and personal projects, particularly for solving 2D finite difference problems in both heat transfer and fluid flow.

Visual Basic .Net (VB.Net)

Motivated by a desire to learn more about software development and create useful tools for fellow students and professors, I began using VB.NET extensively. I developed several GUI-based applications that managed simulation workflows, including generating inputs, mining outputs, plotting results, and more. I even developed the foundation heat exchanger simulation model for my PhD research in VB.Net before converting it to Fortran for implementation in EnergyPlus. Through this work, I gained experience with building responsive interfaces using background threads for long-running tasks, handling events, and storing configurations in the Windows registry. I'll also note that I took time to learn C# to round out my knowledge at this time, but did not use it for any major projects.

Fortran

Fortran was a staple in many of my engineering courses, where we worked on a variety of projects using it. I continued using Fortran beyond coursework, especially when developing simulation code and tools around the EnergyPlus ecosystem. Even today, I regularly work with Fortran, as many components of EnergyPlus and its surrounding tools are still written in it.

Language Interop

My first significant experience with language interoperability came when I attempted to have a VBA program call a Fortran-based library. Successfully marshalling data between VBA and Fortran required a solid understanding of library and API structures, as well as the underlying data types and calling conventions used by each language.

LaTeX

I began using LaTeX as my primary document language for all technical work, class homework, and projects. LaTeX was also the foundation for my thesis and dissertation, and I played a key role in converting the EnergyPlus documentation from Microsoft Word to LaTeX.

2010s to Present

Ruby

I first experimented with Ruby during my graduate research but began using it extensively once I started working at NREL. I developed a translator that converted manufacturers’ mechanical equipment data into OpenStudio and EnergyPlus input files. I continue to use Ruby today to run the EnergyPlus continuous integration system, which is based on a fork of Decent CI.

Python

For well over a decade, I have extensively used Python for countless projects. I embedded a Python interpreter inside EnergyPlus to develop the PythonPlugin system and created a Python API around EnergyPlus to enable new workflows. Additionally, I learned how to build and deploy Django web servers using Python and have even debugged issues deep inside CPython’s implementation.

C / C++

Although I first used C and C++ in college, my involvement deepened significantly during the transition of EnergyPlus from Fortran to C++. I led numerous training sessions for the development team and have since undertaken extensive refactoring efforts to leverage modern C++ features. Today, I use C++ daily for EnergyPlus development and frequently assist other developers by answering questions related to defects and new features.

Modelica

I attended multiple training sessions on using the Modelica language, focusing on how to utilize it for building science applications. I was highly intrigued at how the language integrated aspects such as documentation, icons, and mathematical operations, right into the language specification itself. When researching our psychrometric chamber design at Oklahoma State University, I used Modelica to perform some airflow and surface heat transfer calculations.

Language Interop

As the author of the EnergyPlus C/Python API and Python Plugin System, I developed an intimate understanding of how to marshal data between C/C++ and Python. On several occasions, I have debugged deep within the CPython implementation to diagnose how data is managed inside Python’s runtime environment.