Research Software Engineer
Character and integrity
John Ernsthausen is an applied mathematician, a numerical analyst trained in Computational Science and Engineering (CSE), and a Research Software Engineer (RSE). An RSE is a kind of scientific software developer. John is motivated and detail-oriented, and he takes extreme pride in his work. John loves to learn and has an aptitude for learning new technology. John believes he is successful because he is consistent. He understands his trade and keeps current with emerging trends.
A legacy code written in say FORTRAN77 may remain useful to industry or government. Not only does the user usually have considerable investment in this asset, the asset is mission critical. Yet these codes are expensive to maintain. Modern scientific software development offers philosophies about software craftsmanship that can help. Recent graduates and students of computational science and engineering are ideally suited to help end users remain on mission while completing tasks in budget and on time.
It is about the project and experience for John, and he is proud to advance the mathematics behind finishing aspherical optical surfaces such as large telescope lenses to numerically computing the Hopf point for differential algebraic equations to modelling the triple helix folding of the protein macromolecule Collagen to implementing rigorous defect control for ordinary differential equations. John assisted in collecting, implementing, and developing numerical examples as Werner C. Rheinbold’s and Patrick J. Rabier’s graduate student for the numerical differential geometry package MANPAK and the numerical differential algebraic equations package DAEPAK. John wrote an interface to the Jenkins-Traub algorithm – a polynomial root finder – which is available on GitHub. This collection of projects demonstrates John’s breadth of intellectual interest, curiosity, and experience.
John Ernsthausen is an individual with a versatile skill set who happens to be a resent Computational Science Engineering (CSE) graduate and an applied mathematics PhD (all but dissertation). John holds a Master of Science degree in CSE from McMaster University and a Bachelor of Philosophy, the honors degree, in Chemistry and Mathematics from the University of Pittsburgh.
A mathematician’s most important skill is the capacity for sustained logical and analytical work, Bill Satzer Volume 50, Number 6, July/August 2017. John was one of about 40 Brackenridge Summer Research Fellows which lead to an undergraduate honors thesis and graduating Magna Cum Laude, he was one of two recipients of the Valspar Corporation Award in Chemistry which included a summer internship at the Valspar Corporation, and he holds the second place submission of the Math Matters, Apply it! contest. Each project involved numerical analysis and mathematics.
John Ernsthausen completed several graduate level courses in CSE and applied mathematics including numerical linear algebra, matrix iterative analysis, numerical solution of nonlinear equations, numerical solution of ordinary differential equations, numerical solution of partial differential equations, finite element method, approximation theory, spline approximation, computational Fourier analysis and applications, asymptotics and special functions, optimization chemical processes, engineering optimization, topics in numerical analysis, and probability and stochastic processes.
Applied mathematicians offer employers technical capability, communication skills, and flexibility, Satzer Volume 50, Number 6, July/August 2017. Persons with advanced degrees generally love to learn. They see their essential strength in their ability to learn and continue learning. They adapt in an unfamiliar work environment. Their ability to jump into a situation, assess it, and quickly gage what one needs to know is invaluable.
John Ernsthausen offers employers technical capability, communication skills, and flexibility:
John is experienced with the mathematical software MATLAB, and he is familiar with writing code in languages such as C/C++, FORTRAN77 and Fortran, Java, and Ruby. He always applies the principles and practices of great software craftsmanship including Test-Driven Development (TDD), agile development, Don’t Repeat Yourself (DRY), and the Single Responsibility Principle (SRP). His code is always under Git version control.
John uses a profiler and a debugger whenever necessary, but these tools are rarely needed when he adheres to the principles and practices of great software craftsmanship. The essential linter, unit testing, and automation tools go hand-in-hand with the language chosen for the project at hand.
John is very comfortable using the command line in a Windows, MacOS, or unix operating system. Whether the command line interface (CLI) is batch, bash, or korn, the well documented and secure Git content management system is the content management system of choice.
John is skillful in the following business software. He can create documents and spreadsheets in iWork Pages and Numbers as well as MS Office Word and Excel. Adobe Acrobat Pro, Photoshop, and InDesign help with forms, images, and illustrations. LaTeX and LaTeX Beamer help with document preparation and presentations.
The business conversation establishes project goals. It is a starting point and, perhaps, on the back of an envelope, it establishes an outline for deliverables. The business conversation continues throughout development, and it can continue through the full lifetime of the software.
John Ernsthausen embraces the principles of agile project management and agile software development. He expects these practices to shorten the total development cycle, avoid lengthy planning sessions which can easily be misinterpreted, and drive a product for his customer. He engages in short time framed development cycles and frequent interactions with his client. He seeks to implement a manageable deliverable in each short development cycle. Deliverables include any part of planning, application development, and support.
John Ernsthausen is broadly capable, engaged with the world, and open to challenge. He attended and successfully completed a graduate program outside his birth country. He continues to promote his startup company Smarty Pixels.
Research Software Engineer: A new Career track
In Volume 51, Number 2, March 2018 issue of SIAM News, Chris Richardson and Mike Croucher make the case for a career track principally devoted to improve software quality within the research community in the United Kingdom. The Software Sustainability Institute (SSI) survey found that 70 percent of academic researchers relied on software for their results and over 50 percent developed their own software.
A Research Software Engineer (RSE) interacts with the academic research effort for the purpose of maintenance, testing, and documentation. A RSE is not dedicated to any specific research project. The authors discuss a funding model successfully adopted in the United Kingdom.
John Ernsthausen identifies as an RSE, in part.