Early Years

  • GW-Basic
    • https://en.wikipedia.org/wiki/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
    • https://en.wikipedia.org/wiki/QBasic#:~:text=QBasic%2C%20a%20short%20form%20of,which%20are%20based%20on%20QuickBASIC
    • Many programs made using this language throughout the 90s, including graphical games, logic puzzles, and random projects

2000s

  • Visual Basic for Applications (VBA)
    • https://en.wikipedia.org/wiki/Visual_Basic_for_Applications
    • First semester of college included a course on VBA
  • Fortran
    • https://en.wikipedia.org/wiki/Fortran
    • As a part of most engineering courses, we worked on some Fortran projects. I then continued using Fortran when developing simulation code and tools around the EnergyPlus ecosystem.
  • Language Interop :)
    • My first real experience getting languages talking together was when I first tried to get a VBA program to call out to a Fortran-based library.
  • LaTeX
    • Began using LaTeX as a document language for all technical efforts and class homeworks and projects

2010s to Present

  • Ruby
    • https://en.wikipedia.org/wiki/Ruby_(programming_language)
    • Played with Ruby during my graduate research, but got into it heavily once working at NREL. Used it to develop a translator, taking manufacturers data for mechanical equipment and creating EnergyPlus inputs from it.
  • Python
    • Used Python exhaustively for countless projects.
    • Embedded a Python interpreter inside EnergyPlus to create the PythonPlugin system.
    • Learned how to build and deploy Django web servers using Python.
    • Created a Python API around EnergyPlus to enable new workflows.
    • Debugged inside CPython’s implementation to diagnose issues.
  • C/C++
    • While I used C and C++ in college, this took off heavily as we embarked on converting EnergyPlus from Fortran to C++. I oversee many training sessions for the development team and have since embarked on countless refactoring efforts to utilize modern C++ capabilities.