Startups Using Scala in Boston
This is a curated collection of Boston startups using Scala.
Computer vision & eye-tracking technology to measure viewer attention.
Platform aggregating and analyzing footwear and apparel fit data, providing retailers with tools to offer “highly personalized fit ratings and size recommendations to shoppers.”
Predictive analytics for healthcare data, targeting preventable admissions, member retention, and risk-based reimbursement eligibility.
Tech Stack Highlights
Machine Learning – We build models on our Spark platform using MLlib as well as in custom Python environments where we use many of the popular Python-based machine learning libraries. We’ve invested the most in using the Pytorch library, which we use for our deep learning models.
Spark & Scala – We use a Scala-based data pipeline hosted on Spark to ingest customer data and prepare it for use in our models.
Zeppelin & Jupyter – We work with data using Zeppelin notebooks for Spark and Jupyter in our Python environments.
Automation & Infrastructure – We use CircleCI to build and deploy both our services and infrastructure. We use AWS Lambda to automate infrastructure tasks and create custom notifications and alerts to simplify our internal workflows.
AWS – We host our infrastructure on AWS. We’ve built an independently audited platform that supports working with protected health information.
“A machine learning platform for data scientists of all skill levels to build and deploy accurate predictive models.”
Tech Stack Highlights
Spring Boot – We field a number of microservices on top of Spring Boot. Its convention-over-configuration design allows us to focus on business logic rather than plumbing. We’re particularly looking forward to the Spring team’s upcoming first-class support for Kotlin, which we’ve been gradually introducing as a safe, expressive alternative to Java 8.
React + Redux – We’ve built a highly interactive and engaging front-end using React and Redux. The resulting code is modular, easy to reason about, flexible, and composable.
Kafka – We use Kafka as our primary message bus. Unlike most “big data” technologies, Kafka has allowed us to scale without imposing a notable increase in complexity. In fact, becuase its append-only architecture allows us to view topic contents long after the message has been “consumed”, Kafka allows us to significantly improve monitoring and visibility over more traditional message buses (JMS, AMQP). We’re looking forward to experimenting with Kafka Streams as a lightweight alternative to standalone stream processing frameworks such as Spark.
Zeppelin – We use Apache Zeppelin to query, aggregate, and visualize data across a number of heterogeneous data sources, including MySQL, ElasticSearch, and S3. We write ‘notebooks’ in Scala and SQL to drive Spark in creating these visualizations. These notebooks can be ad hoc or shared, versioned, and parameterized.
NiFi – We use NiFi as an orchestration layer to manage real-time data flows in a simple scaleable way. The framework provides us with the ability to easily monitor the progress of messages as they move through the processing pipeline and to replay messages should it be necessary.
Tech Stack Highlights
Amazon Web Services – We rely on AWS extensively. We use EC2 for computing, EBS for storage, RDS for relational databases, ElastiCache for caching, and we’ve also experimented with Kinesis, Lambda and ElastiSearch. In the past, we used other hosting providers that were less expensive, but as we’re scaling, AWS has been able to scale extremely effectively.
Codeship.io – We use Codeship to run integration tests at every commit. This lets us push hotfixes quickly, especially for UI changes, and lets us run experiments quickly.
FullStory – We use FullStory extensively to look at customers’ use of MarketMuse. It’s also great for debugging – when a customer reports an issue, we can replicate it in FullStory. Our Customer Success team also uses it, especially with new customers, to see how well they’re using the software and where there may be gaps in their understanding.
Scala with Play Framework – We use python for prototyping and in areas where we need to move flexibly. But for heavy lifting, we use Scala. It runs on the JVM, so it natively supports all Java libraries (of which there are many in Natural Language Processing). We use Akka and its “actors” extensively to take full advantage of CPU and network/IO resources.