One interesting distinction is "tutorials" vs. "lessons"... LearnR and datacamp are much better for _lessons_, where you ask a learner to type in some code and check to see if you got it right, with hidden cells with the appropriate test cases backend.
Nice! I like the "link includes" feature. Funny, because we're displaying the terminal results, we've had the opposite problem, where we need to get and process the ansi-escape codes, so we get colors, and proper formatting, etc.
Right now, we're using the notebooks to build better lecture materials + workshops, especially for my DevOps course:
https://github.com/CSC-DevOps/Course
We've seen some interest in having support for live documentation + OneOps (simple runbooks for one-off devops tasks), so we'll probably continue to explore this more.
Nice, thanks for sharing the demos. Was sharing it at work and its hard to convince people to install something to try it out.
I was wondering about the commercial side, because I noticed that the code responsible for turning it into a "hosted" notebook was kept outside of the main repo, which seems common in SaaS approached.
Anyhow, using it for teaching is definitely a good purpose! In fact, it's the use case which sparked my interest. At work we give trainings and the training materials [1] are already in Markdown, so making them interactive by merely annotating them seems easy enough.
I'm happy to see these DevOps courses take off, two years ago when I was finishing my bachelors in CS DevOps wasn't even part of the curriculum. Being able to implement algorithms and architect code. Now these courses are everywhere and well up to date with the industries best practices.
Thanks for including the link to your paper[1] in the README. I saved it in my Zotero library and am looking forward to reading it.
Do you have any thoughts or experience with literate programming? What about the role of Docable, versus choosing PDF as the medium for your own paper, versus something like this[2] sort of thing?
Living papers are useful vision, but it will take a long way to get there.
Even notebooks still are problematic, for example, this study found that only 25% of Jupyter notebooks could be executed, and of those, only 4% actually reproduced the same results.
One compromise is to evaluate the paper separate from it's artifacts, which are reviewed for availability, reproducibility, and reusability. In software engineering conferences, this is becoming a standard, and while there is a huge burden for reviewers to evaluate these things, I think it does take us in the right direction. So in this case, we also submitted our paper for evaluation for its artifacts.
Some limitations in terms of the vms and providers:
* If the size of the initrd is too large, it cannot properly unpack into vm's RAM --- size of RAM must be increased accordingly. We could also change [boot params](https://www.lightofdawn.org/blog/?viewDetailed=00128), or use shared disks, etc.
* For hyperkit, apple's vmnet requires sudo to create a bridge interface on host. We've played with a version that use's vpnkit and port forwarding (like linuxkit/Docker for Mac), but this adds lots of complexity in image, and opted for the simpler approach.
* We would like a better template mechanism for reusing base images and extending. Right now, we support using base image reuse, with extensions through docker buildargs---ideally, we would want something like %include support in Dockerfiles.
* Finally, we're investigating how to make images work well on multiple providers. For example, ubuntu does not play nice with hyperkit out-of-the-box, but works fine for vbox and kvm.
What about swarm mode and orchestration? Also I presume like LinuxKit, there will be configs for different clouds e.g. Digital Ocean and AWS run ISOs slightly differently.
Yes, one use-case is making it easier to setup/teardown clusters for local testing. Two practical scenarios for us: 1) autograding ansible/configuration scripts, 2) CI for instructions/tutorials that involve clusters/devops: https://builds.sr.ht/~ottomatica/job/69644#task-report
Cloud-ready images is an important direction, and on the horizon.
From our discussion with folks at Netflix. We had a long talk about their verification checks. In regards to monitoring:
> Monitoring and alerting is a different beast of a topic. Certainly you can monitor all of these things, but our guidance on alerting strategies is along the lines of finding the top-level metrics for a service (google SREs would call these Service Level Objectives) and only alerting people to dig in when those are impacted. Usually error rates, latency (how many micro/milli/seconds to respond), and throughput (requests per second). A lot of this relies on the people writing the application to instrument their code to store metrics and events. There’s only so much much that you can monitor from outside the application. Some sort of outlier detection is popular too to terminate bad, one-off instances (particularly common in the public cloud)—funny thing is you have to alert on whether you’re killing too many instances too quickly (irony of automation).
I would venture we want to separate testing images and infrastructure on startup before receiving traffic or just making it out of CI vs. monitoring the health of instances. But they also can have things in common!
Costs need to think in terms of the entire ecosystem: the time spent creating the answers, the time spent writing official documentation that isn't consulted, and the time saved finding the answer faster.
Many technical writers and documentation teams from large corporations have been reaching out to me on this topic, they are definitely interested in learning how to adapt their processes based on Stack Overflow's success.
But not everything is roses. Providing answers can be [slow](http://blog.ninlabs.com/2012/05/crowd-documentation/), unanswered questions are rising, and [users stop doing actions](http://research.cs.queensu.ca/~scott/papers/MSR2013.pdf) that lead to badges as soon as they achieve them. On recent field study at a large industrial company, when learning WPF, they relied on books, and internal seminars to learn new concepts because Stack Overflow at the time did not have sufficient saturation on examples yet. As seen with [another study](http://blog.leif.me/2013/11/how-software-developers-use-twit...) on twitter usage, in some contexts, the subject matter and available of easily accessible experts makes looking online less effective.
I work at Stack Overflow and we are very liberal in sharing our data when it doesn't involve PII. If there is any way I can help you, I am sklivvz@ our domain name.
You can build some cool stuff with RMarkdown and LearnR:
* https://rmarkdown.rstudio.com/
* https://rmarkdown.rstudio.com/docs/articles/rmarkdown.html
One interesting distinction is "tutorials" vs. "lessons"... LearnR and datacamp are much better for _lessons_, where you ask a learner to type in some code and check to see if you got it right, with hidden cells with the appropriate test cases backend.