Coding

Writing Code

I am by no means a professional coder, but in my field of study, it was necessary for me to learn how to code. During my undergraduate and graduate studies, I was writing my own code, before I learned braille. Professional coders who are blind or visually-impaired use braille displays and they are more efficient at the process than I am.
To write my own code, I relied on audio using VI on a terminal window with VoiceOver. In my experience, the best way to learn was to memorize specific keywords and syntax, so that I didn't need to constantly look things up (which isn't easy for me to do). Precision is also really important, and I've found it is helpful to have a sighted person look through the code to help me debug.
Now, coding is not the center of my intellectual focus. I rely on an access assistant who is a coder. I can dictate to them, give them the psuedo-code, or state how the code should be programmed. I am fortunate to have access assistants with coding skills as it makes the process easier and more efficient.

Programs and How I've Used Them

Gaussian
Gaussian is a computational chemistry software package which can perform a broad range of simulations such as molecular mechanics, semi-empirical quantum calculations, and density functional theory (DFT) methods. Gaussian is useful because you can run it from the command link and a terminal window, so it is navigable using VoiceOver. When using Gaussian, it was important to set up my files strategically and carefully.
One of my fellow blind scientists, Dr. Henry Wedler, used Gaussian output files to 3D print small organic structures with braille labels. Although it's currently limited to small sized molecules, this is a useful application to help with visualization. To read more about Dr. Wedler's work click here and here.
AMBER
Amber is a suite of molecular dynamics software used to simulate proteins and nucleic acids. It is a very intricate program which can be run from a terminal window. In order to acquaint myself with Amber, I required the help of an access assistant to understand how it interfaced with my computer. It was also important to make sure that I could navigate it easily using my screen reader. The difficulty with any molecular dynamics code is the results. For example, running a 100 ns and taking snapshots every 0.2 ps will generate very large data sets. Although easy for the rest of the scientific community to interpret—typically with PYMOL, which is not open source or accessible—I had to find alternative ways to visualize my data.
AMBER
Amber is a suite of molecular dynamics software used to simulate proteins and nucleic acids. It is a very intricate program which can be run from a terminal window. In order to acquaint myself with Amber, I required the help of an access assistant to understand how it interfaced with my computer. It was also important to make sure that I could navigate it easily using my screen reader. The difficulty with any molecular dynamics code is the results. For example, running a 100 ns and taking snapshots every 0.2 ps will generate very large data sets. Although easy for the rest of the scientific community to interpret—typically with PYMOL, which is not open source or accessible—I had to find alternative ways to visualize my data.
CHARMM
Chemistry at HARvard Macromolecular Mechanics (CHARMM) is a molecular simulation software package which has range of applications. CHARMM is also run via command line, but it is more finicky than Amber. If you are off by even a single space, it will not work; CHARMM will tell you this with a skull and crossbones error. These kinds of errors are very difficult and frustrating to track down as a blind person. One upside to CHARMM is that a reduced version of the program is available free-of-charge.
VMD
Visual Molecular Dynamics (VMD) is a visualization tool for molecular dynamics simulations. Although it has a command line function, VMD is a very visual program and not really accessible to me, but I still needed to know the facets of the program and the different ways to represent the structure of interest (ball and stick, van der Waals surface, etc.). I memorized the capabilities so I could teach an access assistant how to use it. Even though I'm unable to see it, I still have to present the results to the visual world when I publish or present, so I had to ask a sighted person if the end result is clear. Because I rely heavily on sighted access assistants to use VMD, I have to be sure to ask the right questions, communicate clearly, and have an understanding of the technical terms with them about the names of different shapes.
Xmgrace
Xmgrace, or Grace, is an open source graphing software. This is another program that I need help with, but I like that Xmgrace gives you the ability to be very precise in creating graphical content. I recommend creating your own protocol so your access assistants can just run and implement it. Like VMD, visual content is being created, so I have to rely on an access assistant to ensure the quality and content is correct. I've found it's helpful to have them compare to other plots that already exist.
ChemDraw
ChemDraw is a chemical drawing tool and molecule editor. It is very commonly used in multiple disciplines to depict chemical reactions. Unfortunately, ChemDraw is not accessible.
More recently, there has been progress in making chemical structure drawings accessible to the visually impaired. For example, Progressive Accessibility Solutions is working to make Accessible Chemistry Diagrams. There have also been efforts to generate tactile chemical representations with braille labels using ChemDraw.
MATLAB
MATLAB is a numerical computing environment by MathWorks which can be used to plot data and interface with other programs. The command line lends itself better to accessibility, although you'll still need a sighted person to make a graph, but it's a good program for blind or visually impaired individuals to use. I've been working with the MATLAB developers to make the web version more accessible.
Perl, Python, Fortran 77, etc.
When learning programming languages, the most difficult thing for a blind person to learn is the syntax; a sighted person can just look up this information as needed. On the other hand, I had to learn and memorize the syntax. Perl was the first one I learned, and its concepts can be applied across multiple different languages. Fortran was more basic and had less syntax to memorize, but with fewer elements to use the coding was harder. Python, on the other hand, was much easier to code and much of the language exists pre-coding.
VI and EMACS
Both VI and EMACS are command-line based text editors that can generally be used to write any type of code. I am a VI user. In my experience using EMACS on Linux, I was never able to get it to work because it has a lot of mouse-based commands. VI, on the other hand, is text-based and VoiceOver is able to read all the lines and it is much more accessible for me.