We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
How Angular lit up Vegas in the Professional Lighting Industry | Nathan Walker & Eduardo Speroni
Learn how Nathan Walker & Eduardo Speroni built a professional lighting console app with Angular and NativeScript, mastering complex state, DMX protocols & iOS integration.
-
Built an Angular app for iPad called Blackout Lighting Console - a digital version of an analog lighting console using NativeScript and Swift UI
-
Architecture stats:
- 114 components
- 91 services
- 11 directives
- 2 pipes
- 33 Swift UI views
- Uses Angular 17 control flow syntax
-
Performance optimizations:
- Multi-threading with web workers for DMX data processing
- Detached views from change detection when hidden
- Shared array buffers for zero-copy data transfer
- Small, memoized selectors for state management
- View pooling for efficient list rendering
- Throttling/buffering for data transmission
-
DMX protocol requirements:
- Constant 44Hz transmission rate
- UDP-based protocol
- Each light fixture has multiple parameters (intensity, pan, tilt, etc.)
- Values map to DMX channels (0-255 or 0-65535)
-
State management considerations:
- Strong state management necessary for complex data flows
- Single source of truth for all values
- Faders stack based on priority
- Multiple input sources affect final output values
- State changes must be performant to avoid visual stutters
-
Native iOS integration:
- Uses Core MIDI, Core Foundation, Core Graphics
- Swift UI components for native look and feel
- Zero-copy data marshaling between JS and native code
- Hand tracking support for Vision Pro