We’re dedicated to providing custom solutions to help solve the water-related challenges and problems facing our clients. Our approach to developing software applications that support decision-making is no different. We work closely with you to develop a tool tailored to your specific needs, drawing on our decades of experience using and developing software for environmental data management, water resource modeling, and decision support.
We invite you to explore our software design process and the project examples highlighted on this page to learn more about the “how” and “what” of our software development and how it might support your work in water.
Software Design and Development Approach
Whether we are developing a new web application or modernizing scientific geospatial software, we approach our software development projects with a general approach. We employ a User-Centered Design process to develop a shared understanding of the vision, needs, end-users, and expected workflows. This design process naturally leads to an iterative software development process organized around short-term sprints and feedback cycles following the Agile Methodology. We can scale our approach to software development tasks of all sizes while generally including all of these phases in the design process.
Design Process
-
Understand Needs and End-User Workflows
We start by working closely with you to identify problems you need to solve and envision how the software application can address those challenges, including understanding intended end-users and their expected workflows. We typically kick off this phase with a 2 to 12-hour “design charrette” workshop.
-
Mockup
Our initial sprint cycles typically focus on diagramming workflows and mocking up user interfaces for each step in the workflow. Feedback helps refine our collective understanding of the software’s design features and priorities.
-
Develop, Build, Test
We develop the software, conduct testing, and create “micro-deliverables” for feedback within every sprint cycle, focusing on advancing the priorities for the next release.
-
Release, Deploy, Document & Train
With each release, we deploy the ready-to-use software to end-users with documentation and often training to use and manage the software and its new features.
-
Support & Enhance
We provide ongoing maintenance and support and stand ready to help you meet your changing water-related needs and challenges by adding new features.
We develop custom desktop, web, and cloud software tools that support your work in water.
Project Examples
Lake Superior Headwaters Sustainability Partnership Decision Support Tool
Great Lakes Coastal Wetland Decision Support Tool
Blue Harvest Water Benefits Calculator
Model My Watershed
Our Technologies
Software technologies are ever-evolving. At LimnoTech, we continuously track and learn new technologies while maintaining skills with legacy languages and frameworks. We always work closely with our clients to identify and implement the software solution that best fits their needs, whether it is modernizing to the latest cloud-native framework, supporting their existing legacy systems, or providing the most cost-effective solution to their immediate needs.
The technologies that we have leveraged to support our clients are summarized below.
Programming Languages
Different programming languages excel at meeting various needs. We work with multiple languages to make sure we can use the right tool for the job.
- Modern/Preferred: C#, JavaScript, Python, R, SQL, TypeScript
- Legacy: C/C++, CSS, Fortran, HTML, Java, Visual Basic
Application Frameworks
We love building customized web, mobile, and desktop applications tailored to your needs. These are some of the frameworks that help us do it.
- .NET, ASP.NET, Django, Drupal, FastAPI, Flask, jQuery, Shiny, Starlette, React, Spring
Scientific Software
We are scientists and engineers who use scientific software to analyze, model, forecast, and visualize historical and simulated datasets on a daily basis. We combine these skills with our knowledge of environmental processes to develop custom software packages that perform specific scientific computations and workflows, from modeling water quality scenarios to process-guided machine learning forecasting. We develop our scientific software using the following libraries.
- Scientific Software Stack: Scientific Python (i.e., SciPy, pyData, Pangeo), including Dask, Numpy, Pandas, and Xarray; Earth systems modeling software written in Fortran and C/C++, Basic Model Interface (BMI) wrappers for model coupling
- Analysis and Machine Learning: CatBoost, PyTorch, SciPy, Scikit-learn, TensorFlow, R Tidyverse
- Visualization: Highcharts, HoloViz, ggplot, Matplotlib, Plotly, Seaborn
- Packaging: Comprehensive R Archive Network (CRAN), Conda-Forge, Python Package Index (PyPI)
Geospatial Analysis Systems
Geospatial information is a core component of environmental data systems and software. Here are some technologies we use when we develop custom software to map, manage, analyze, and share geospatial data.
- GIS Desktop: ArcGIS, ArcGIS Pro, DotSpatial, QGIS
- Analysis and Visualization: GDAL/OGR, GeoPandas, GeoViews, Lonboard, rasterio, Shapely
- Web Services: ArcGIS API for JavaScript, ArcGIS Online, GeoServer, Google Maps API, Leaflet, pygeoapi
- Data Storage: ArcObjects, Cloud-Optimized GeoTiffs (COG), GeoPackage, GeoParquet, netCDF, PostGIS, Zarr
Databases, Data Engines, and Data Stores
Environmental data comes in a multitude of different forms. We use various tools, including relational databases, NoSQL databases, and cloud-native file formats, to develop a data systems solution that best meets your needs.
- Relational Databases: Microsoft Access, Microsoft SQL Server, MySQL/MariaDB, Oracle, PostgreSQL, SQL Server, SQLite
- Non-Relational Databases: ChromaDB, MongoDB, Tinydb
- Object Stores: IceChunk, NetCDF, Parquet, Zarr
Data Sharing Standards
Data system standards form the backbone, making data Findable, Accessible, Interoperable, and Reusable. These FAIR Data Principles are foundational to the vision of the Internet of Water (IoW) Coalition and other Open Data Initiatives. We have helped our clients meet their data-sharing needs by adapting their data systems to interoperate with the following standards.
- Open Geospatial Consortium (OGC): Environmental Data Retrieval (EDR); Observations and Measurements (O&M), including Observations Data Model v2 (ODM2); Processes; SensorThings, Web Coverage/Features/Map/Tile Services (WCS/WFS/WMS/WTS)
- Other: Climate-Forecast (CF) Metadata Conventions, CUAHSI Water One Flow / WaterML (WOF), GeoConnex, SpatioTemporal Asset Catalog (STAC), Water Quality Exchange (WQX)
Platforms and DevOps
Modern Continuous Integration / Continuous Deployment (CI/CD) approaches have transformed the efficiency of deploying newly developed software into the hands of users on any platform or operating system. Once your application is built, we can help you release it to a distribution platform such as the Python Package Index (PyPI), host it “on-premises,” or deploy it to cloud infrastructure. We have experience working with a range of computing platforms, operating systems, containers, environments, and DevOps systems.
- Operating Systems: MacOS, Linux (Debian, Ubuntu), Windows, Windows Server
- Containers and Environments: Docker, Conda/Mamba
- Cloud: Amazon Web Services (AWS), Azure
- DevOps: Github Actions, GitLab CI/CD, AWS Cloud Development Kit (CDK)
Software Development Life Cycle
We are practiced in a variety of software development life cycle models. We can adapt our process to the approach that works best for your team.
- Version Control and Issue Tracking Systems: Bitbucket, Github, GitLab (including federally owned and managed)
- Agile, Adaptive Project Framework (APF), Feature Driven Development (FDD), KanBan, Scrum, Waterfall