Developing codes and scripts that just 'get stuff done' is oftentimes part of the job for computational scientists and engineers. We certainly understand placing a premium on functionality & flexibility over form. But we also understand end-user perspectives and the fact that software tools are truly useful unless they are widely adopted, and they are not widely adopted unless they are both functional and engaging.
Updated on November 02, 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. But having a long history of developing our own and using 3rd party scripts, 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, being 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. But it’s also 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: