Masterful solution to one of the least discussed aspects of day to day development, navigating from between shell and editor, all while accessing remote systems and generating documentation. Superb!
Thanks for publishing this stuff, Howard, this has really helped me a LOT. Your essay is one of the main reasons I got into orgmode after using Emacs just for editing for many, many years!
+Bill Burdock You very welcome. Thanks for the kind words.
9 лет назад+6
Thank you Howard - with your literate devops/programming blog articles you made huge difference to my work/life ;) This video intro is amazing too, I even found couple small improvements I didn't know about.
Seth Mason ... not sure why I missed your question, but Slack accepts modified markdown format, so at the moment, I have been working on a simple "slack-specific markdown" wrapper that seems to work pretty well, but isn't quite as ready-for-primetime as it should. The biggest change that I made to it was replacing the links to files with a references to my company's gitweb interface.... clearly not something others would find helpful. But perhaps you start with Markdown and go from there?
Thank you for taking the time to showcase this really great idea. Really great presentation! Literate devops is the way to go for daily devops operations. This begs for a follow up ! Did you try to make the tramp and babel run asynchronously (so one can keep on using emacs during execution of commands)? And how do you protect emacs from freezing when tramp freezes on more difficult output?
+Martin Bijl-Schwab Synchronously working with Tramp is a real problem and primary challenge in my projects working like this. One approach that sometimes works well is to use the :session feature and keep the connection alive. However, any hiccup, and the connection can get into an unknown state (but you can switch to its connection buffer and press Return or whatever it takes to get back to the prompt to continue). When it gets to be a problem (I have one deployment that requires a few hours to run), I use a Terminal session, and copy/paste results into my notes file. Perhaps we can create a more comint approach to an asynchronous process...
+Howard Abrams I like to help to get a more comint approach, though I am not an expert lisp hacker... I can share some examples how I manage using org-babel-tangle, async, async-inject-variables, shell-command. The basic idea is to have a section in the org-file with all async blocks. They share the parameters use language specific properties and a bit of elisp (print) to share variable filenames. I execute the org-babel-execute on a emacs-lisp block which tangles all the blocks in the async section.
+Martin Bijl-Schwab Regarding your comment for a follow-up, I did made a movie of a wrapping Tramp functions/features to kick off multiple remote shell commands ... in parallel. Not quite a follow-up, but close. ruclips.net/video/pSjrwSI4OHk/видео.html
and inspiring.... It clutters less than having all the outcomes in org-mode directly and your eshell config is nicely documented on github. Pretty slick and easy to hook into orgmode.
Babel commands do run synchronously by default, and can be an issue for long running jobs. This is why I generally don't run chef-client directly from my org-mode files. However, this is something that we should probably fix.
I'm using an Emacs project called 'demo-it'. While you can install it from MELPA, its version 2.0 is in beta, but is much nicer. github.com/howardabrams/demo-it
Is it just me or do the :PROPERTIES: not work. I have to use the following syntax: :PROPERTIES: :header-args: :dir Reporter :END: The style in the video is much more convenient/easy to remember. Is there a way to have them? Also for the header-args version I have to hit C-c C-c after adding the new args in order to add them to the buffer session.
Hi, some pretty cool stuff. Do you know how to *nicely* close a session though? If I execute a "setup" session i.e, ssh somehost and then immeadiately execute again I'm running the 2nd time within the shell of the first. This can lead to unexpected results in code blocks later.
+Howard Abrams yeah or I can kill the shell session. What I'd like is to be able to label the setup code bock as a "init" section so when I C-c C-c it it kills the existing session and starts a new one.
+Matt Ford Oh, I misunderstood. I see, you are using the `:session` feature of org-mode, right? In that case, you can specify different names for when a block that is going to say, host-a and another going to host-b ... however, those sessions (as far as I know) are never closed cleanly... just dropped. Let me know what you figure out.
Howard, really enjoyed this a derived a lot of inspiration from it! Now, when is part II? Perhaps further examples of how you use it here : github.com/howardabrams/dot-files/blob/master/babel/openstack.org :-)
Masterful solution to one of the least discussed aspects of day to day development, navigating from between shell and editor, all while accessing remote systems and generating documentation. Superb!
Thanks for publishing this stuff, Howard, this has really helped me a LOT. Your essay is one of the main reasons I got into orgmode after using Emacs just for editing for many, many years!
+Bill Burdock You very welcome. Thanks for the kind words.
Thank you Howard - with your literate devops/programming blog articles you made huge difference to my work/life ;) This video intro is amazing too, I even found couple small improvements I didn't know about.
This is ridiculously awesome.
Seth Mason ... not sure why I missed your question, but Slack accepts modified markdown format, so at the moment, I have been working on a simple "slack-specific markdown" wrapper that seems to work pretty well, but isn't quite as ready-for-primetime as it should. The biggest change that I made to it was replacing the links to files with a references to my company's gitweb interface.... clearly not something others would find helpful.
But perhaps you start with Markdown and go from there?
MIND=BLOWN
truly awesome stuff
really awesome, got some new ideas how to use org-mode
Brilliant Howard - many thanks.
Thank you for taking the time to showcase this really great idea. Really great presentation! Literate devops is the way to go for daily devops operations. This begs for a follow up !
Did you try to make the tramp and babel run asynchronously (so one can keep on using emacs during execution of commands)? And how do you protect emacs from freezing when tramp freezes on more difficult output?
+Martin Bijl-Schwab Synchronously working with Tramp is a real problem and primary challenge in my projects working like this. One approach that sometimes works well is to use the :session feature and keep the connection alive. However, any hiccup, and the connection can get into an unknown state (but you can switch to its connection buffer and press Return or whatever it takes to get back to the prompt to continue).
When it gets to be a problem (I have one deployment that requires a few hours to run), I use a Terminal session, and copy/paste results into my notes file.
Perhaps we can create a more comint approach to an asynchronous process...
+Howard Abrams I like to help to get a more comint approach, though I am not an expert lisp hacker... I can share some examples how I manage using org-babel-tangle, async, async-inject-variables, shell-command. The basic idea is to have a section in the org-file with all async blocks. They share the parameters use language specific properties and a bit of elisp (print) to share variable filenames. I execute the org-babel-execute on a emacs-lisp block which tangles all the blocks in the async section.
+Martin Bijl-Schwab Regarding your comment for a follow-up, I did made a movie of a wrapping Tramp functions/features to kick off multiple remote shell commands ... in parallel. Not quite a follow-up, but close. ruclips.net/video/pSjrwSI4OHk/видео.html
and inspiring.... It clutters less than having all the outcomes in org-mode directly and your eshell config is nicely documented on github. Pretty slick and easy to hook into orgmode.
Babel commands do run synchronously by default, and can be an issue for long running jobs. This is why I generally don't run chef-client directly from my org-mode files. However, this is something that we should probably fix.
Thanks for the awesome tutorial.. gave me new ideas on how I can use emacs in a more mature manner for my project
Thanks for your excellent demo and coining the phrase 'Literate DevOps'!
org can export to slack? My google-fu is failing. Where is this library?
Hi, how did you make this presentation in org? I want to do a similar presentation
I'm using an Emacs project called 'demo-it'. While you can install it from MELPA, its version 2.0 is in beta, but is much nicer. github.com/howardabrams/demo-it
Is it just me or do the :PROPERTIES: not work. I have to use the following syntax:
:PROPERTIES:
:header-args: :dir Reporter
:END:
The style in the video is much more convenient/easy to remember. Is there a way to have them? Also for the header-args version I have to hit C-c C-c after adding the new args in order to add them to the buffer session.
+jonathan willis What version of org-mode and Emacs are you using. I'm wondering if this may be a feature of a newer version....
+Howard Abrams
GNU Emacs 24.5.1
Org-mode version 8.3.2 (8.3.2-37-gd45217-elpa)
It might be because I use spacemacs instead of plain jane emacs.
Hey Howard,
What is the theme you use for Org mode? I can't seem to find it in your config, but I like the way it does bullets
Check out org-bullets and my .emacs setup:
github.com/sabof/org-bullets
github.com/howardabrams/dot-files/blob/master/emacs-client.org#color-theme
Hi, some pretty cool stuff. Do you know how to *nicely* close a session though? If I execute a "setup" session i.e, ssh somehost and then immeadiately execute again I'm running the 2nd time within the shell of the first. This can lead to unexpected results in code blocks later.
+Matt Ford Try renaming the buffer window, as this will allow you to run another shell session.
+Howard Abrams yeah or I can kill the shell session. What I'd like is to be able to label the setup code bock as a "init" section so when I C-c C-c it it kills the existing session and starts a new one.
+Matt Ford Oh, I misunderstood. I see, you are using the `:session` feature of org-mode, right? In that case, you can specify different names for when a block that is going to say, host-a and another going to host-b ... however, those sessions (as far as I know) are never closed cleanly... just dropped.
Let me know what you figure out.
This is awesome, thank you ! :) I'm a fan of demo-it . I used it at my research group presentation. I will try to contribute :P
Howard, really enjoyed this a derived a lot of inspiration from it! Now, when is part II? Perhaps further examples of how you use it here : github.com/howardabrams/dot-files/blob/master/babel/openstack.org :-)
wow ... just wow thank you :)
You should run the sound through a compressor; a hiss filter won't hurt either.
You sir, you are awesome, you deserve a cookie. :D
Seriously amazing stuff! Thanks!
So good! :)
Sounds like Agent Smith!
I’ve created a summary of this talk: gist.github.com/Profpatsch/abda97a7b635f876e29f544a26840666
+Ephrones Sharp (Profpatsch) Thanks! That is really nice.
awesome, deesser pls
Oh man, so fnghhgg cool!!!