“I do not know much about gods;… But I think that the river is a strong brown god” — T.S. Eliot
THE FOUR QUARTETS “Time past and time future what might have been and what has been Point to one end, which is always present.”
SORRY, @JACK…. T.S. ELIOT INVENTED TWITTER IN 1935!
Distracted from distraction by distraction. Filled with fancies and empty of meaning. Tumid apathy with no concentration. Not here the darkness, in this twittering world.
The Four Quartets, Burnt Norton (III) — T.S. Eliot, 1935
TO GIVE AN EXAMPLE
ARE THE FOUR QUARTETS ON TWITTER? 4 AM.
YES, THE FOUR QUARTETS ARE ON TWITTER.
AND THE ARCHITECTURE?
A WORKING PROTOTYPE
WHAT’S WRONG WITH IT? ▸ Spaghetti loop of code ▸ Very long time-outs for “lost words” ▸ No flexibility of views
SECOND TRY.
SKIMMER & SCRIBE.
A CLEANER WORKING PROTOTYPE
SO WHAT’S WRONG WITH IT? ▸ The two applications use PubNub for IPC ▸ What happens if you want to construct the poem in a different order, or all at once? Do you spin up more applications? Use a concurrency library? ▸ What about “lost words”? ▸ What happens if one of the applications fails? ▸ What happens if PubNub fails?
A PROCESSORIENTED SOLUTION.
AND,
I’D LIKE TO LEARN A NEW LANGUAGE.
VS.
SHAPES SHAPE.
TEXT
CONFIRMATION BIAS?
me.
WEIRD? UGLY?
I WANT A LIST OF INTS BUT I GET…
“\”#$%&’”
ELEGANT? BEAUTIFUL?
I LOVE LIST PROCESSING. WHO KNEW!
LISTS ARE FUN
T.S. ERLANG
BOOK LEARNING.
AND WATCHED A MOVIE
OTP.
OTP BOXES & ARROWS
RECAP
WHAT DID I GET WITH ERLANG / OTP? ▸ One repo, different processes ▸ Supervision trees ▸ Gen servers ▸ “Lost Words” can now be long-running, non-blocking ▸ I can swap out the “Order Words” server if I want ▸ Easy to build new views.
MASSIVELY SCALING?
NOPE.
RATE LIMITING.
GEN_SERVER: A COOL ERLANG THING
THE KEY SERVER ▸ Cycles through the keysets ▸ Provides global accessors to a singleton state. ▸ Because of the Erlang mailbox and how it queues requests, you do not run into a case where two or more processes get the same key.
OTHER TWITTER
S
OH.
AUTH. (OAUTH).
STREAM PARSING.
LOTS OF PARTIAL TWEETS
SIDE BY SIDE
APP COMPARISON.
ERLANG / OTP ▸ One application, many processes ▸ Processes do not share state ▸ built-in OTP behaviors
RUBY ▸ “Two” separate applications ▸ Processes shared state via PubNub ▸ Custom Classes ▸ Each application corresponds to a supervision tree.
OBJECTS V. PROCESSES.
THING-FOCUSED INTRODUCTION TO OBJECT-ORIENTED PROGRAMMING, LYNDA.COM
GRAPH & MESSAGE-FOCUSED AN ERLANG VISUALIZER: KRESTEN KRAB THORUP
REQUISITE FAMOUS-PERSON QUOTE TO PROVE A POINT
“I MADE UP THE TERM 'OBJECTORIENTED', AND I CAN TELL YOU I DIDN'T HAVE C++ IN MIND” Alan Kay, OOPSLA Keynote, 1997
STATE.
PASSING THE BATON
STATE AS A RELAY RACE
THREE SMALL PROCESSES
CARRYING THEIR STATES
DECOUPLING.
“Quick, said the bird, find them, find them, Round the corner…” — T.S. Eliot