April 2017: Reactive

Meetup #38. Please RSVP at Meetup.

We get started at 6:30 pm.

Sponsors

Venue provided by Startup Edmonton.

Talks

Diet Hacks

Nathan Youngman (slides)

Reactive Programming in Go

Gerrit Renker asked what reactive programming requires, and whether Go is a good fit. He built the talk around the Reactive Manifesto's four traits — responsive, resilient, elastic, and message-driven — and their roots in the actor model (sequential internal state, message passing, and supervision hierarchies as found in Erlang and Akka). He showed how the actor model maps naturally onto Go as a goroutine plus a struct with a channel for a mailbox, then surveyed related ideas: event sourcing, Reactive Streams with non-blocking back pressure, and Reactive Extensions, whose handlers reduce to OnDone, OnError, and OnNext. Assessing Go's support, he listed pros (CSP supports actors, first-class functions, an RxGo library) and cons (no process isolation, no supervisor pattern, no location transparency). He closed with patterns for supervised errors — external tools like panicwrap or supervisord, and internal recovery with recover().

Key points:

  • Reactive systems react to events, load, failure, and users.
  • The four traits: responsive, resilient, elastic, message-driven.
  • The actor model maps to Go as a goroutine + struct + channel mailbox.
  • Event sourcing persists state changes as an ordered event stream.
  • Reactive Streams standardize asynchronous back pressure.
  • Rx handlers boil down to OnNext, OnError, and OnDone.
  • Go lacks process isolation, supervisors, and location transparency.

slides

Events