What We Do

Provide tools, analysis and expertise to make science better.

If scientists are more efficient, then they have more time to do science. More time for science means better science which is good for humanity, but also more funding opportunities which is good for scientists. We can make scientists more efficient by removing the burden of software development and maintenance, delivering tools, data and services that meet the needs of specific researchers and the scientific community as a whole, so that scientists can focus on doing science.

Areas of Expertise
Million Concepts is a company dedicated to creative and versatile problem solving. If we don’t already have the skills needed to solve your software problems, we will try to find the people that do. We have specific institutional expertise in:
  • Research software tools
  • Data calibration pipelines
  • Software maintenance, documentation, and cleanup
  • Data and software archiving
  • Image processing
  • Astronomy and planetary science data
  • Spacecraft engineering and mission support
  • Game design
We also maintain a Talent Pool of potential subcontractors with a range of skills that include:
  • Graphic design
  • User experience (UX)
  • Machine learning
  • Data visualization
  • Copy editing
  • Education
  • Databases
  • Software security
  • and much more…
Guiding Principles
  1. Better software leads to better science. Scientists should not be held back by tools that don’t work or don’t meet their needs. Software done right should facilitate the exploration of the universe. Except on the very edge of the technological envelope, software should not be a bottleneck to good research.
  2. Computer programming is a trade skill. Scientists whose area of research is not primarily in software should not be expected to do their own computer programming any more than they should be expected to do their own plumbing or dentistry.
  3. Software should be transparent and maintainable. It should be easy to use, easy to modify, and easy to understand. This should be true whether or not you’ve written it yourself and whether you need to use the software next week or ten years from now.
  4. A tool should have exactly as many features as it needs and not more. Features tend to increase complexity non-linearly. Complex code is opaque and unmaintainable. Code should be as simple as possible.
  5. Scientists can learn from engineers. Academics can learn from industry. To the extent possible, software and systems engineering best practices should be employed in academic research software. This includes but is not limited to the creation of requirements specification documents and high level systems design, design reviews, etc. This doesn’t necessarily feel like “real work,” but a little effort put into understanding what needs to be done at the beginning of a project can prevent a lot of false starts and wasted effort during development.
  6. Trust the specialists. There are people who specialize in user interfaces, data display, high efficiency computing, machine learning, and large scale data storage. There’s a specialist for everything. Scientists often want to be jacks of all trades. But if it saves you time, effort, or money to ask a specialist, then that’s probably what you should do.
  7. Knowledge wants to be free. To the extent possible, the raw data and source code used to generate scientific results should be published along with the results themselves. The code and data should be covered by the most liberal license possible under the circumstances; ideally it will be placed into the public domain. This aids in replicating results and building upon ideas. Sharing code and data is also increasingly a requirement attached to funding from some agencies or publication in certain journals.
  8. We’re all in this together. The scientific process is a quest for knowledge on behalf of all humanity.