Developing codes and scripts that just 'get stuff done' is often a part of the job for computational scientists and engineers. We certainly understand placing a premium on functionality & flexibility over form. However, we also understand end-user perspectives and the fact that software tools aren't truly useful unless they are widely adopted, and they are not widely adopted unless they are both functional and engaging.
Updated on December 06, 2020
2 min READ
Our software development philosophy falls somewhere between traditional developers - who focus on the process (code architecture, the technologies used, maintainability, etc.), and practicing scientists & engineers - who focus on the problem (whether or not the tool can effectively meet the needs of today and those they envision for tomorrow).
We tend to lean towards the problem-focused mindset. Because our company has a long history of working with various software tools and APIs, we also know the pain of having to repeatedly hop from one tool to another in order to complete a job. We see the value in creating software solutions that perform fixed tasks well but are also flexible. A prime example is our custom printed circuit board (PCB) CT imaging application. The application, developed under SBIR funding from the US Air Force, provides fixed pathways allowing users to perform well defined tasks related to non-destructive reverse engineering. It is constructed in an open and flexible manner to allow users to easily extend its capabilities - a tool that gets today’s job done, but also leaves the door open for tomorrow’s needs.
We have created software solutions touching on: data analysis & visualization; machine vision & learning; process simulation & optimization; materials engineering; and quantitative finance. We prefer to use science-centric languages like Matlab, Python, C++, and heck even Fortran. Like many others, we also have experience leveraging cloud technologies like AWS. But our differentiating factors are our abilities to: