Docker and Singularity are very appealing software systems to run different operating systems or reproducible analysis steps by using “containers”. Here is a quick intro to get you started.
Originally developed for large-scale web applications, nosql databases like to see themselves as next generation dbs and are using “not only sql”.
Here is an approach to detect the user’s operating system using a bash script. This might be useful during installation routines of your software.
To display data as bar graphs along the genome e.g. in the UCSC genome browser, you can create BigWig files. DeepTools is a powerful library that can also help with this.
For any large software project (i.e. one that requires more than a few scripts performing a one-off task) and for every project that was initiated by a customer request, it is useful to precisely define the requirements before starting to write any code. This might be painful at times and slow down the coding fun, but it should avoid a lot of frustration on either side in the end.