Replies: 4 comments 5 replies
-
Hi @woutdp! Have you seen this talk? https://www.youtube.com/watch?v=glPx8gcu-ek - Brooklyn already has some "kino" components which can be used for teaching. If any are missing, you can implement the remaining Kino components yourself and you don't need to wait for the Livebook team. This would definitely be the preferred route. So I will comment on the Livebook changes.
I am unsure we would add something along these lines. You will probably need to spend the first lesson explaining what is Livebook anyway, so that can be a quick note. :)
Honestly, I am not sure. All notebooks I know are vertical and I think we cannot assume horizontal is enough for everyone as I don't think you will have enough space on laptop or low-resolution screens. We do want to support the idea of canvas in the future, where you can align outputs in any way you want, but the canvas is a separate window/horizontal pane outside of Livebook's main flow.
Then it is best to use separate livebooks. You can have one lesson per directory with multiple liveboks. You can link between them, in order to keep the flow. Good luck and let us know how it is going! |
Beta Was this translation helpful? Give feedback.
-
Thank you @josevalim, that video by Brooklyn is exactly what I was looking for! I'll try to go that route, I think it will get me to 100% of the features I was envisioning. That canvas features sounds promising and more featureful than what I was thinking of. Just to give you an idea of what I was envisioning with horizontal styling, I copied one of Brooklyn's notebooks and made an altenative layout in photoshop. BeforeAfterI would still narrow the text a bit so there's more space for the code, if the canvas feature supports something like this that would be cool! Smaller screen sizes are an issue though like you said, but making it responsive should fix that. Like only showing on larger screens with the feature enabled in your personal settings. Just throwing out ideas in case you think it's useful. In any case I'll look into Brooklyn's solution and I'll share any interesting findings here :) |
Beta Was this translation helpful? Give feedback.
-
Wanted to share some progress, developing a tutorial for Ash: https://github.com/woutdp/ash_tutorial So far it has been fantastic! One thing I'm missing is a way to make components out of blocks. For example, I have a navigation block I add to the top and bottom of the livebooks. I divided every tutorial into one Livebook like suggested, so this allows for quickly going to the next tutorial. Another one is a 'Show Solution' block. Could be nice to not have to repeat myself in those instances. It's not such an easy problem to solve I think but wanted to mention it just in case a light bulb goes off in your head :) Besides that it's really great. Also loving the |
Beta Was this translation helpful? Give feedback.
-
Just wanted to chime in again. There's 'Code zen' and 'Presentation' mode already present, I was wondering if there is room for more another mode. I want to have a mode that only allows reading markdown, running and editing codeblocks. Disallowing the ability to edit markdown, or add new blocks. For example, (although I discourage it in my tutorial) when trying to copy markdown, I often find myself double clicking certain words to select them, which opens up the editor. When user testing it with an experienced Ash user, but an unexperienced Livebook user, they were seeing the '+code +block +smart' in between blocks, which isn't relevant for following a tutorial and confused them just a little bit. Not sure what to call this mode. This is sort of an alternative for the locking feature you're not excited about :) maybe an all encompassing mode could be more along the lines of something you'de be willing to support? I'd be happy to add the mode myself, but before I start working on it I'd want to make sure it fits with the direction Livebook is going. The argument that people should just learn livebook is valid though. It might take 5 minutes to learn. But nonetheless it is a barrier. A good example of reducing barriers is the 'Run in livebook' button, which is excellent! No need to manually clone a git repo is one of those things that just reduce the amount of pain a user has to go through. Philosophically speaking, markdown is for reading and structure only. When making a livebook for other people, users will seldom have to edit the markdown. They're mostly expected to read the markdown, read/execute/edit the code. But the markdown should generally stay the same, as it serves to teach/guide/explain. I think this is true for most usecases, not just for tutorials. Code on the other hand should be edited quite a lot more. It's also a 'creating' vs 'using' livebook sort of thing.
Anyway just wanted to chime in, might be more food for thought! Also saw some of your Livestream, I'm excited about the doc test feature you're working on! Could be the goto method of including tests inside tutorials :) |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Tutorials
I'm interested in building tutorials in Livebook that gradually introduces you to new concepts as you go along targetted towards beginners. Not necessarily Elixir beginners, but for example Ecto beginners. My current interest is seeing if it's possible to make a tutorial for Ash as I think that's where its documentation is lacking. But the tutorial feature should be generalizable to any concept inside and including Elixir.
This could be a great addition to any Elixir package that wants to introduce a tutorial. Something that's easily importable into a local Livebook to get you started.
I would maybe want to develop these features, but before I can start on it I want to align with the Livebook team so there's a clear vision for this.
What is a tutorial?
A tutorial is not a how-to. How-to's are already possible in Livebook. Tutorials serve the purpose of teaching beginners to get familiar with whatever you're trying to teach them. How-to's show you how to do a certain thing.
From the diataxis framework on documentation:
2 great examples of tutorials are
Elements of a tutorial
Why I think Livebook is great for tutorials
Livebook already allows you to run code, write markdown, divide into sections and import packages in a very accessible way. Accessible is the key word here.
In addition it's great for collaboration, allowing for teachers to edit the same code the student is editing.
Why can't we do this already
I see a couple of blockers. Some of these might be possible already, please let me know if that's the case.
Features could either be native to livebook, or with external packages like kino/smart cells or a combination of both.
Some of these features might be possible to fix at the same time with some overarching concept, or need to be introduced step by step.
Next steps and questions
Actions
If a conclusion is reached I might be interested in developing these features myself. Either in an external package that integrates nicely with Livebook, or with core features of livebook, depending on how the discussion goes. Before I start on it I want to see if there's interest in the idea at all, and how to approach the idea.
Beta Was this translation helpful? Give feedback.
All reactions