Table of contents

DONE

REPLs All The Way Up: A Rubric For Better Feedback Loops

youtubevideo

%3 cluster_9ff66858_dee8_4028_aa20_6d8df26b31c1 REPLs All The Way Up: A Rubric For Better Feedback Loops cluster_2d1b2d26_01a6_423f_9740_7164f4844fb3 Sections _0a32f8f0_3e93_4460_9ffb_7cb5ccbb83cd History of feedback loops on programming _2a34d5e0_cb8b_4fcb_944a_4b462d8a383e Properties of the REPL _041fe656_049f_4fac_832f_4faa2bcc4435 How they would be presented at other levels of complexity (>1 unit of code) _10b3490f_44a1_467d_a3a3_7ddeeabc1052 Spreadsheets _041fe656_049f_4fac_832f_4faa2bcc4435->_10b3490f_44a1_467d_a3a3_7ddeeabc1052

Sections

Properties of the REPL

  • Read

    • A prompt is welcoming & open ended

    • Discoverable : Autocomplete/suggestions

    • It is highly incremental

    • REPLs are SAFE: a private place to try things

  • Eval

    • In the same language as used on implementation

    • Allows to poke the system, see what happens

    • Automates the repeating parts of exploration, leaves the rest open-ended

  • Print

    • Multi-channel: result, STDOUT/ERR, exceptions, ...

    • Rich errors

    • Scrollback buffer creates a story

    • Basic serialization of the data, exposes threads that can we can pull on

    • You get stuff you don't expect (open to surprise)

    • For experimentation AND exploration

  • Loop

    • Build context over time

    • Interactions are lossy (we can throw them away)

    • Are responsive

    • Are conversational

How they would be presented at other levels of complexity (>1 unit of code)

  • Unit

    unit tests

  • Feature

    how to measure?

    • Tracing

    • Debugger

    • Reload-driven development

    • Hot-reload

  • Service

    • Make friends with SQL (the REPL to your data store)

    • ChatGPT the web as a REPL

  • Application

    • Design with tactile, conversational methods

      • CRC Cards

      • Event Storming

      • Whiteboards

    • Automate scenario reproduction

  • Application in production

    • Use CI/CD

      • But beware of blockings/context switching that it might produce

      • Beware of feedback via users -> support ticket -> meeting

      • Enabled by

        feature flags

        • Release & deploy are two loops with different scopes, decoupled by feature flags

    • Use observability & distributed tracing

  • Product team

    • Make friends with customer support

    • Make friends with your salesperson

  • Business

    • Facilitate REPLy behavour

      • Support business metrics and analytics

      • Provide spreadsheets

      • Commidity software for commodity needs