# 2023-04-20 - Learning Journey Working Group - Meeting Notes #5

2023-04-20 - Learning Journey Working Group - Meeting Notes #5


Action items from last time

@zmitchell’s Mastodon post

  • @zmitchell: Posted Zach Mitchell, PhD 🦀: "If you were going through a #tutorial series, wou…" - Hachyderm.io
    • Maybe not a super representative sample
  • Avoid hard cases in tutorials or incrementally introduce them?
    • 74% would like the hard stuff to be shown
  • Book was recommended: Chapter 1 Guiding principles | The Carpentries Curriculum Development Handbook, which recommends to work backwards from what the user wants to achieve
  • But currently we’re working forwards, what’s the first step, what should be the next, etc.
  • Backwards would be like “User wants to set up a python env, what do they need to know”
  • Benefits to both ways, but backwards has the advantage that you only need to work on content that works towards that end goal
  • Should we work backwards instead? Could work in small chunks or big chunks
  • E.g. Django’s docs has very big chunks.
  • End goal can be something complicated (e.g. Python env), but we can incrementally get there:
    • nix-shell
    • shell.nix with pip/python
    • Managing Python dependencies with Nix
  • @erooke: Generally agree with this. With Nix it’s hard to pick a story and avoid bikeshedding. For Django it’s easy, you build a web app, for Nix not so clear becausne there’s many things you can do
  • @henrik-ch: Could pick multiple things
  • @khaled: Generally also agree, makes people care about Nix at all, which a goal can clearly demonstrate with a hard example. We can show how Nix is not ecosystem-specific, other language PM’s can’t bring in tools from various ecosystems
  • @zmitchell: Do need to pick something, maybe focus on a large story. Might not work to have “first steps python”, “first steps rust”. Still should have a general first tutorial
    • How much do we need to show people the magic of Nix? If they’re on nix.dev they’ve probably already seen some.
    • E.g. if we pick Python, we could show CPython that needs system libraries, e.g. numpy/scipy using BLAS.
  • @infinisil: High-level goal: Using NixOS tests, integration tests, having everything work automatically
  • @khaled: Good goal, not easy to do otherwise. Something that would make me want to go deeper, something seemingly difficult, build towards that.
  • @zmitchell: What’s a project that would involve most things we want to teach
    • Show people how to get unstuck on their own. That’s what experts know
  • @infinisil: Backwards thinking probably more like: Pick end goal, break it down into steps, show people how to get unstuck for each step for things they might run into
  • @zmitchell: Set up environment to do Nix-agnostic work
  • @zmitchell: Full integration test sounds compelling, starting with a tease showing a single file doing all of the set up.
  • @infinisil: Not that hard even, nixos tests are nice, also leads into NixOS
  • @erooke: Nix is really good for pulling a lot of different things, devops, testing sounds very powerful
  • @khaled: Also agree integration test sounds good. Problem might be macOS though.
  • Might need to hold back on this, not sure about the state on Darwin, if we can write a consistent tutorial
  • @zmitchell: Can we achieve the same without a VM? Can we use a shell.nix with a shellHook
  • @infinisil: Could work towards a remote linux builder
  • @zmitchell: Pushing back on this, want people to be able to do it without extra work
  • @henrik-ch: How about using Docker
    • @infinisil: Not great Nix integration, VM tests are better
    • @khaled: Can’t run VM test inside Docker either. Maybe we should do some homework to investigate
    • @khaled: Nested virtualisation, on Apple silicon can’t run VM within a VM, can try out myself
      • @zmitchell: Iirc I’ve used nested virtualisation before
  • @henrik-ch: Can write a tutorial that doesn’t work yet
    • @infinisil: Draft, but maybe not publish yet
    • @henrik-ch: Can put a banner that it doesn’t work on Darwin yet
    • @khaled: Writing docs is good to feed it back to the code
  • @zmitchell: Everything but the last piece should work fine
  • @infinisil: Idea: Put final state in a tutorial, we can test it easily like that
  • @infinisil: Let’s write down the things we want from the end goal
    • Multiple machines interacting:
      • Postgresql database → NixOS configuration
      • Frontend: typescript
      • Web server: nginx → NixOS configuration
      • Backend: python → Integrating with language package managers
    • Development setup, maybe with foreman, see GitHub - NixOS/hydra: Hydra, the Nix-based continuous build system
    • Use devenv, has a way to declare processes
    • @khaled: Idea: Playwright

Action items