Symptomatic, LLC

Most bioinformatics shops nowadays are hosting on AWS or Azure, since they have HIPAA tiers and offer enterprise SLA contracts. Meanwhile Heroku hasn't historically supported HIPAA. Rackspace and Google Cloud would be other hosting providers we would consider, but we just don't get requests for them. So, we mostly focus on AWS and Azure support.

2 upvotes827 views

We wanted a JSON datastore that could save the state of our bioinformatics visualizations without destructive normalization. As a leading NoSQL data storage technology, MongoDB has been a perfect fit for our needs. Plus it's open source, and has an enterprise SLA scale-out path, with support of hosted solutions like Atlas. Mongo has been an absolute champ. So much so that SQL and Oracle have begun shipping JSON column types as a new feature for their databases. And when Fast Healthcare Interoperability Resources (FHIR) announced support for JSON, we basically had our FHIR datalake technology.

2 upvotes821 views

Fast Healthcare Interoperability Resources (FHIR) supports JSON and XML datatypes as it's default data types. We chose Javascript for it's native JSON support and inclusion in every web browser on the market. We also liked it's open source ecosystem, as we had been burned by vendor lock-in from Microsoft and Oracle in the past.

2 upvotes741 views

We actually spent three or four years trying to avoid using ExpressJS, as it's more low-level than we would like. Our goal is to develop a modern tech stack that's productive for bioinformaticists, clinicians, and superpatients; and that means abstracting away from raw TCP and header management. We prefer most of those things to be already worked out, so we can save that mental effort for managing medical terminologies and ontologies. So, for a long time, we were using Meteor's DDP protocol instead of HTTP. It works great. But it's not widely supported. Eventually, we had another company volunteer some open-source code that sorted out the details of an Express based FHIR server implementation. So we were happy to pull it in since someone else was already managing it. Long story short, we include ExpressJS as a deep dependency in the Node FHIR Server Core library we use from Asymmetrik.

2 upvotes690 views

The Node on FHIR project began nearly 5 years ago, when we were using building bioinformatics visualizations using D3.js hosted from PHP. At the time, we were working on phylogenetic trees, cladograms, family genealogies, gene networks, and similar complex data structures. JSON or XML were the obvious data structures for such a task. We chose JSON at the time because we had access to a great open-source JSON data store called MongoDB. When Fast Healthcare Interoperability Resources (FHIR) was announced, it included support for XML and JSON data types. And considering how much we've invested in Node/Javascript, we decided to formalize around JSON.

2 upvotes635 views

Fonts and typography are fun. Material Design is a framework (developed by Google) that basically geeks out on how to assemble your typographical elements together into a design language. If you're into fonts and typography, it's fantastic. It provides a theming engine, reusable components, and can pull different user interfaces together under a common design paradigm. I'd highly recommend looking into Borries Schwesinger's book "The Form Book" if you're going to be working with Material UI or are otherwise new to component design.

2 upvotes351 views

We use Selenium for our FDA validation testing.

For those not familiar with FDA and NASA quality control initiatives and testing requirements, suffice it to say that the federal government tends to talk in terms of 'validation and verification testing' in many of its' regulations. There's decades of history behind this term, and the three important takeaways are the following:

First, a project has to have two or more testing strategies, so as not to fall into a bias with a single testing strategy. Second, one of those testing strategies has to be user-centric, commonly known as validation testing. Examples include crash test dummies and end-to-end software acceptance tests. Third, most any other testing strategy can qualify as verification testing.

So, we use Selenium for our FDA validation testing, because it simulates a user walking through the software.

It's big and bloated and slow, and the legacy version runs on Java, and it's brittle and doubles the amount of code we have to write, and is otherwise a total pain in the ass. But it's like folding your parachute before skydiving or having a depth gauge when SCUBA diving or placing bolts when climbing a wall. There are simply some tasks that you don't want to do without safety gear.

And for all its' pain to use, Selenium is like safety gear for building your tech stack. We've migrated across a half a dozen user interfaces, two entirely different back-end languages, three or four data protocols, and countless utilities over the years. And Selenium warns us when we're in danger and it catches us when we fall.

2 upvotes201 views

We use Mocha for our FDA verification testing. It's integrated into Meteor, our upstream web application framework. We like how battle tested it is, its' syntax, its' options of reporters, and countless other features. Most everybody can agree on mocha, and that gets us half-way through our FDA verification and validation (V&V) testing strategy.

2 upvotes133 views

As an network mesh technology, a recurring design challenge for us is to create isomorphic (same-shaped) javascript code that supports FHIR data anwyhere... server, client, database, tooling, microcontrollers, etc. That means compiling our code to both Android and iPhone; and to both Windows and Mac and Linux. Electron gets us our desktop deployment and is our gateway into the world of Windows.

2 upvotes125 views

We use XCode for compiling our Javascript to iOS. We do that using Cordova/PhoneGap, a bridge technology that runs the javascript in a dedicated UIWebView on iOS. Doing so suffers a performance penalty because we're running interpreted code instead of native, so it's often a bit sluggish compared to native apps. We're looking forward to see how much WebAssembly can improve on things; and until then, we focus on having real clean UI code. If all the components are functional, tested, don't have side-effects, and are non-blocking, then even the interpret code can feel like a native app. It takes a lot of discipline to write clean Javascript code that can do that, though. Lastly, we use the Meteor pipeline to launch XCode as a build step.

2 upvotes118 views