Skip to content

Commit 68186d0

Browse files
eahansonsax
andcommitted
add case studies
Co-Authored-By: Eric Saxby <77073+sax@users.noreply.github.com>
1 parent d7f8907 commit 68186d0

File tree

1 file changed

+62
-7
lines changed

1 file changed

+62
-7
lines changed

software.html

Lines changed: 62 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ <h3>
7373
</section>
7474

7575
<section>
76-
<h2>Examples</h2>
76+
<h2>Case Studies</h2>
7777
</section>
7878

7979
<section>
@@ -95,17 +95,72 @@ <h3><a href="https://rankedplacement.com">Ranked Placement</a></h3>
9595
<section>
9696
<h3><a href="https://www.testreflector.app">Test Reflector</a></h3>
9797

98-
<p>
99-
Effortlessly monitor your GitHub Actions workflows directly from your Mac’s menubar. Test Reflector provides a
100-
convenient overview of your workflows’ statuses and recent results, eliminating the need to constantly switch
101-
tabs or watch your email for failure notices.
102-
</p>
103-
10498
<p>
10599
With dozens of open-source repositories and a host of personal and private projects that we maintain, we found
106100
that we needed a better tool for tracking GitHub Actions—especially on the days where we update dependencies
107101
across 40+ repos. Thus <a href="https://www.testreflector.app">Test Reflector</a> was born.
108102
</p>
103+
104+
<p>
105+
Test Reflector provides a concise overview of CI workflow statuses and recent results across repositories,
106+
eliminating the need to constantly switch tabs or watch your email for failure notices. The application targets
107+
iOS as well as macOS. We wrote the core of the application in Rust, for its type safety, stability,
108+
headless testability, and cross-platform portability, bridged with Swift for the UI.
109+
</p>
110+
</section>
111+
112+
<section>
113+
<h3>Replatforming a mission-critical legacy codebase</h3>
114+
115+
<p>
116+
A Fortune 500 company relied on a legacy business-critical application for worldwide budgeting. This decades-old
117+
application was difficult to understand, to modify, and to maintain. Operations had been outsourced, and no
118+
team within the company had the expertise to continue development on this application.
119+
</p>
120+
121+
<p>
122+
We joined an existing team of developers who had just begun replatforming the application to Elixir and Phoenix.
123+
In addition to feature development, we introduced software design patterns that increased the team’s ability to
124+
ship code quickly, and we helped bring the team’s less-experienced Elixir developers up to speed.
125+
</p>
126+
</section>
127+
128+
<section>
129+
<h3>Building a carbon emissions data pipeline</h3>
130+
131+
<p>
132+
A large global logistics company wanted to operationalize the tracking of their greenhouse gas emissions.
133+
Their data team could manually create emissions reports, taking days or weeks to produce; the company
134+
wanted to provide on-demand real-time emissions data to their customers.
135+
</p>
136+
137+
<p>
138+
We joined a team of developers who had just begun building the new application. We built the initial data
139+
pipeline that pulled data from a large data lake as well as from external APIs, performed real-time emissions
140+
calculations, and created streaming exports capable of generating 100M row Excel sheets. We developed PostgreSQL
141+
queries capable of summarizing and calculating emissions over 100s of millions of records in real-time using
142+
optimized common table expressions (CTEs). We also trained developers new to Elixir in testing and coding paradigms.
143+
</p>
144+
</section>
145+
146+
<section>
147+
<h3>Processing a multi-year healthcare data backlog</h3>
148+
149+
<p>
150+
A state department of health had a multi-year backlog of COVID-19 health care data that epidemiologists needed
151+
access to in order to perform comorbidity analysis. Processing the data required interacting with 6 different
152+
health information exchanges (HIE), each of which had different resource thresholds and concurrencty limits. While
153+
documenting that they supported the same HL7v3 API format, each HIE’s API demonstrated inconsistences and unique
154+
response behaviors. New daily data dumps continually increased the size of the backlog, as well as changed the priority
155+
of existing records depending on certain markers.
156+
</p>
157+
158+
<p>
159+
We rapidly developed a data pipeline application with built-in real-time dashboards for monitoring and reconfiguring
160+
concurrency. We interacted with HIE personnel to investigate their APIs, develop workarounds for unintended API
161+
behaviors, and help them to identify and apply fixes where possible. The deployed application used resilient
162+
architectural patterns that allowed for real-time reprioritization, idempotency, error recovery, and observability.
163+
</p>
109164
</section>
110165

111166
<section>

0 commit comments

Comments
 (0)