Reflective Software is the software consulting practice of Eric Saxby and Erik Hanson, who each have decades of software development experience in various programming languages, most recently with Elixir and Rust.
What We Do
With a strong focus on developer tooling, automated testing, and observability tools, we’ve helped teams to reduce the onboarding time of new software engineers, as well as to reduce the pains of their development processes by streamlining, automating, and reducing risks in their workflows as well as by replacing manual checklists with continuous integration and deployment pipelines.
We are strong advocates of automated testing and can help kickstart or improve your application’s test suite. We have a lot of experience with unit tests, UI tests, integration tests, and API tests, and we have written a number of open source libraries to help with testing.
We have strong web app and web UI skills, and have built many web applications on our own and alongside our clients’ developers, including multi-user multi-role enterprise workflow applications, and a videoconferencing server with a web-based client. We have added web-based dashboards showing application performance and status as well as real-time remote visualization of high-volume data transformations.
We use a lot of open source software, and we contribute back with pull requests and by creating our own open source libraries and tools.
Tech Stack
- Languages: Elixir, Rust, Swift
- Web frameworks: Phoenix, Phoenix LiveView
- Data stores: PostgreSQL, Azure SQL, Dremio
Highlights
- Worked on projects both on our own, and with an existing team by contributing to feature development while mentoring less-experienced members to improve their programming skills.
- Built multiple highly interactive web applications with full test coverage.
- Built data pipelines with minimal maintenance requirements over multiple years of service.
- Decreased data processing delays of a critical health care data pipeline from hours to minutes.
- Processed a multi-year data backlog, with data enrichment from severely resource-constrained external services, with real-time reprioritization of data.
- Integrated data from various sources including USB-connected hardware, XML- and HL7-based healthcare APIs, non-normalized data lakes, and legacy SQL databases.
- Worked with untested and undocumented APIs, building resilience into data pipelines by discovering, documenting, and handling unexpected use-cases.
- Optimized SQL queries for datasets of over 100M rows with our solid relational database skills.
Elixir
We have been building applications in Elixir since 2018, and have deployed over a dozen Elixir applications in that time. We have also published and maintain many open source libraries.
We have decades of test-driven development experience, which we have brought to Elixir in terms of building full Phoenix LiveView UI test suites (that run in a few seconds), as well as test-related open source libraries such as Pages, HtmlQuery, XmlQuery, and Schema Assertions.
We have not only built UI-heavy applications, but also built multiple data processing applications. We have experience using libraries such as Broadway, GenStage, Flow, Membrane, and Oban, as well as high-volume and high-speed data processing applications using tools provided by the Erlang and Elixir standard libraries.
In these data pipelines, we have faced problems related to strict concurrency constraints, API interoperability with little, no, or incorrect documentation, and with the need for high reliability and high speed (for instance, reducing a 12-hour long process to under 2 minutes).
- CSV imports and exports
- Excel imports and exports
- XML parsing and generation
- Event sourcing of high-volume data pipelines
- Streaming data
Rust
We have built CLIs and terminal UIs in Rust, that we and teams we’ve worked with use every day. We have also used Rust at the core of Elixir NIFs for high speed data processing, as well as for interoperability with Rust libraries such as webrtc-rs.
Our experience has focused on using Elixir as a main orchestrator for server operations, but we'd love to work more with Rust in terms of implementing core application logic shareable between multiple languages, such as Elixir and Swift.
Developer workflow and tooling
We care a lot about developer workflow, and believe that team members should be able to onboard onto new projects within minutes. New hires should be able to ship code on their first day, with a safety harness of tooling to ensure they are able to do so confidently while reducing annoyances.
For this purpose, we have build two tools: Medic and Daily Diff.
Want to talk about working together?
Email us at contact@reflective.dev.