You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Update portfolio card to emphasize Electron app, team building, and constraints
- Change badges to highlight system characteristics over tech stack
- Switch navigation from rounded-full to rounded-lg for cleaner look
How do you collect 90-minute matches without choosing between velocity and correctness?
22
-
We reduced collection from 16 man-hours to 4 concurrent collectors by building a DSL that let PMs define sports rules without engineering involvement.
23
-
The architecture separated collection rules from execution logic—new sports became configuration, not code.
24
-
Lesson learned: architectural separation eliminates trade-offs that feel inevitable.
21
+
How do you scale real-time sports data collection without sacrificing correctness?
22
+
Started with an Electron app (XState state machines, 30+ contextual keyboard shortcuts) that reduced 16 sequential hours to 4 concurrent collectors.
23
+
Then built backend DSLs so product managers could define sports rules as configuration—new sports became data, not code.
24
+
But architecture alone isn't enough: learning to build team ownership took until year three, and geo-political constraints meant the final piece—customer-facing DSLs—never shipped.
25
+
Lessons: Architectural separation eliminates false trade-offs. Team building shapes what's sustainable. Context determines what works.
Copy file name to clipboardExpand all lines: src/pages/portfolio/statsbomb.mdx
+6-3Lines changed: 6 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,11 +23,14 @@ import Accordion from '../../components/Accordion.astro';
23
23
<Bodysize="lg"as="p"class="text-neutral mb-6">Architecture as data enabled 10x scale, but building team ownership two years late meant racing geo-political constraints before completing what the domain needed.</Body>
24
24
25
25
<divclass="flex flex-wrap gap-2 mb-4">
26
+
{/* System Characteristics */}
27
+
<Badgevariant="category">Real-Time Data Collection</Badge>
0 commit comments