Consistent Technical Documents Using Emacs and Org Mode

Поделиться
HTML-код
  • Опубликовано: 16 ноя 2019
  • Files used in the demo: gitlab.com/spudlyo/orgdemo
    My dotfiles: gitlab.com/spudlyo/dotfiles
    Read The Org: github.com/fniessen/org-html-...
    Read The Docs: sphinx-rtd-theme.readthedocs....
    Git from the Bits Up: • Git From the Bits Up
  • НаукаНаука

Комментарии • 88

  • @armynyus9123
    @armynyus9123 4 года назад +32

    "...and I hope you learned something." ... Learned Something?! You just changed my life. But that's ok :-)

  • @derkling
    @derkling 4 года назад +32

    That's literate programming as sweet as it can be in a just 20mins demo. Awesome tutorial Sir, from plot to execution you tick all the boxes!

  • @PhilippeCarphin
    @PhilippeCarphin 3 года назад +2

    @14:41 "Looks good though"
    Quite the understatement!

  • @victornoagbodji
    @victornoagbodji 4 года назад +6

    🙌 🙌 👏 never have i found such a compelling reason for learning emacs! 🙏

  • @TaoHansen
    @TaoHansen Год назад +4

    This is easily the best video on literate programming with Org Mode on the internet.

  • @stevenbrown3654
    @stevenbrown3654 4 года назад +1

    Fantastic video! Tonnes of content, reasonable length, entertaining and extremely well produced. I will definitely be adapting some of these methods for my own practice. Thank you!

  • @bobkoss280
    @bobkoss280 4 года назад

    Very well thought out and executed. You, sir, have an awesome talent.

  • @stacklysm
    @stacklysm 4 года назад +2

    As a Windows user (and programmer), I've never stopped for a while to appreciate how flexible and powerful Linux distros can be. I specially liked this video since I often find myself using cmd and PowerShell alot

  • @danv8718
    @danv8718 4 года назад +2

    Outstanding tutorial. Really top-quality stuff. Thank you for sharing.

  • @ChristopherOstrouchov
    @ChristopherOstrouchov 4 года назад

    Very well done. Thank you for this excellent and approachable introduction to org-mode.

  • @FractalMannequin
    @FractalMannequin 3 года назад +2

    I've been using Emacs and org for almost a year now and I've watched a lot of videos and tutorials. This is among the best ones around for this topic. Thank you a lot, I was looking forward to it.

  • @lurgreen
    @lurgreen 11 месяцев назад +1

    extremely well prepared video tutorial - amazing job!

  • @k11m1
    @k11m1 4 года назад +1

    brilliant, more videos like this need to be done! Amazing work!

  • @meathead919
    @meathead919 4 года назад

    Really nicely made tutorial and demonstration of the possibilities. Thank you!

  • @quantum_mechanic
    @quantum_mechanic 4 года назад +2

    This is awesome, and very well made video. Inspired me to start learning emacs.

  • @catraaaw
    @catraaaw 4 года назад +9

    I've been meaning to try org-mode for a while and your video was the last straw. :) Thank you! Please keep it up.

  • @glennhoetker2721
    @glennhoetker2721 4 года назад

    Thank you very much for the super clear video and accompanying documents. Inspirational and educational.

  • @KostasKolias
    @KostasKolias 3 года назад

    Dude, awesome job. Keep the good stuff coming...

  • @kedonsiemen
    @kedonsiemen 4 года назад

    Very well done! Beautiful presentation!

  • @fleetfoot9034
    @fleetfoot9034 4 года назад +1

    I find the sound of your keyboard so very satisfying

  • @geez6666
    @geez6666 3 года назад

    Killed it! Thing about Emacs and Org is there is always something better and new to learn.
    Especially from content published few years back, and just when you think there is nothing more to learn about these two....lol.
    Thanks

  • @nasseralkmim4394
    @nasseralkmim4394 3 года назад

    Really nice presentation. Good work!

  • @MMABeijing
    @MMABeijing 3 года назад +1

    thank you YOutube, thank you Sir. You ability to story-tell and the quality of your video/sound made viewing that video as enjoyable as watching a short movie. You Sir had me on the edge of my seat and I learnt a lot as well. You are my new reference in terms of emacs. I am just gonna go ahead and sub/like, I am sure the rest of your channel rocks. Again, thank you !

    • @elspuddo
      @elspuddo  3 года назад +1

      I'm glad you liked it! These days I mostly make videos of the presentations I give at the yearly SeaGL conference, but I hope to stop being lazy and to make more at other times of year too :)

  • @bilange
    @bilange 4 года назад +2

    I daily drive orgmode for agenda and simple lists, but still your video is border line witchcraft magic. (Take that as a compliment! ) Amazing to see in action!!

  • @Cons-Cat
    @Cons-Cat 3 года назад

    This demo is incredible!

  • @dontorzz
    @dontorzz 4 года назад +2

    Thank you for excellent tutorial!

  • @aaparky7039
    @aaparky7039 4 года назад

    Many thanks for a great working example.

  • @d1sixpounder
    @d1sixpounder 4 года назад +1

    This presentation is a very high quality presentation on literate
    Programming with org-mode and emacs. I had love to see your talk in that conference. Please post a link to the talk, if possible.

  • @MingweiZhang
    @MingweiZhang 4 года назад +1

    This is fantastic! Thank you for sharing! Been using org mode for four years, realized that I still have much to learn!

  • @furkanturkal8414
    @furkanturkal8414 4 года назад

    Awesome video!

  • @akashdeeph.2865
    @akashdeeph.2865 4 года назад

    Bro..just do this more often. U rock. V need more heroes like U to show'em vmers what Emacs can do that they cant!!!

  • @callimas
    @callimas 4 года назад +3

    This video was very, very useful to me. I also hope to see more Emacs content in the future. I just have one tiny, pedantic comment: Org is not "a Markdown language." Markdown and org-mode's syntax are two unrelated markup languages that were invented independently around the same time (org-mode in 2003, Markdown in 2004).

  • @CBusschaert
    @CBusschaert 4 года назад

    I learned things today.

  • @BerkaySoyluoglu
    @BerkaySoyluoglu 4 года назад +6

    Read The Org: github.com/fniessen/org-html-themes
    Read The Docs: sphinx-rtd-theme.readthedocs.io/en/latest/installing.html (Need Sphinx which is a python module: www.sphinx-doc.org/en/master/usage/quickstart.html)
    Git from the Bits Up: ruclips.net/video/MYP56QJpDr4/видео.html

  • @onlyfaas
    @onlyfaas 4 года назад

    Yoooooo this is great

  • @MimiKLM
    @MimiKLM 3 месяца назад

    That's great, again! Is there any chance you could discuss a bit more around export/dispatch customisation? Ie, having this great document, we'd like probably to publish it on our server (ftp?) where some css-es already are present. Or, perhaps, we have our WordPress blog and we'd like to publish this technical document as a post? Or publish it in confluence? Many thanks in advance. K.

  • @johnhammer8668
    @johnhammer8668 3 года назад +1

    use let instead of setq in the my-publish function that would affect only locally

  • @syzygy6
    @syzygy6 4 года назад +6

    Small quibble! Markdown HTML and Org are types of markup languages, not mark down languages. That could cause some confusion for people, especially beginners.

    • @elspuddo
      @elspuddo  4 года назад +2

      That's a good point, I often butcher the whole mark{down,up} distinction.

  • @gartenstuhl2396
    @gartenstuhl2396 3 года назад +1

    Wow, I have been using emacs for years and apparently I still know nothing about it. Thank you very much, I have learned a lot. This video is actually worth to watch multiple times. You are really fast with Emacs. I know you have posted your .emacs files but I still got to ask. Are you still using classical Emacs bindings? Do you have any insights/opinion on how to become more efficient?

    • @elspuddo
      @elspuddo  3 года назад +2

      Yup, I do indeed use the classic Emacs bindings. One of the things that helps my efficiency is having a good programmable keyboard. I use a Kinesis Advantage 2, which has 6 thumb buttons. This allows me easy access to Control and Meta keys, which makes chording very easy.

  • @sergioruiz
    @sergioruiz 4 года назад +1

    Great video! Wondering how you got the little circles as your section headers. I have always had asterisks. I have never seen those little circles.

    • @cuperius
      @cuperius 4 года назад +2

      That's the org-bullets-mode. It can be found here: github.com/sabof/org-bullets

  • @kickbuttowsk2i
    @kickbuttowsk2i 4 года назад +1

    this is a well made video. Can we expect more emacs content in the future?

    • @elspuddo
      @elspuddo  4 года назад +7

      I'd like to, I don't have a ton of ideas for other videos though. One idea I did have though was to do one on common data structures in elisp. I still sometimes struggle with relatively simple stuff like association lists, and quoting, and I bet a lot of other people do too.

    • @MarkEichin
      @MarkEichin 4 года назад

      @@elspuddo I do find that using python for string and list manipulation on a daily basis causes me to/helps me to forget the elisp ways, so I'd certainly watch that...

    • @MMABeijing
      @MMABeijing 3 года назад

      @@elspuddo Maybe something about using snippets and templates with org-mode?

  • @pedromorais8709
    @pedromorais8709 4 года назад

    Hey! Nice video, can you say how to export to Confluence?

  • @roberthaddon5069
    @roberthaddon5069 4 года назад +1

    Great video. Can you link to the source of the git mechanics you used? It’s mentioned in the vid, but I didn’t catch the time.

    • @elspuddo
      @elspuddo  4 года назад +1

      Git from the Bits Up: ruclips.net/video/MYP56QJpDr4/видео.html
      (also in the pinned comment, I'll add it to the end of the video's description too)

  • @armynyus9123
    @armynyus9123 4 года назад +1

    very important: change org from value mode to scripting mode (7:38)!

    • @jeongpyolee717
      @jeongpyolee717 3 года назад

      I can't find out how and where to change that mode from default. how do you change that?

    • @elspuddo
      @elspuddo  3 года назад

      Check out the variable "org-babel-default-header-args". You can set the ":results" header to "output" there.

    • @jeongpyolee717
      @jeongpyolee717 3 года назад

      @@elspuddo Thanks you for Help!!! Much Love! & Cheer! ruclips.net/video/i-VBSMixrns/видео.html Good day for you!

  • @ethernet764
    @ethernet764 5 дней назад

    00:39 #+title: - in-buffer setting
    01:13 what is org mode?
    01:44 formatting syntax
    02:18 org-export-dispatch (C-c C-e) as html
    02:28 #+setupfile: - in-buffer setting
    03:29 what is org babel?
    03:35 #+begin_src and #+end_src - org babel code block
    03:52 org-ctrl-c-ctrl-c (C-c C-c) execute org babel code block
    04:28 :dir - code block header argument
    04:48 #+property: - in-buffer setting; sets file-level header arguments
    05:07 #+include: - in-buffer setting
    05:23 # -- mode: -- - local variables in files
    05:30 #+name: - code block directive
    05:38 :exports - code block header argument
    06:04 #+call: - in-buffer setting
    06:22 why redirect stderr to stdout?
    07:15 :results output - code block header argument
    08:59 call_hello() - inline call to code block (prefix with "call_" and append the #+name: of the code block)
    09:20 call_hello[:results raw]() - header arguments in inline call ()
    09:41 :noweb - code block header argument
    10:36 :var - code block header argument
    11:09 call_short_hash(line=hashobject) - inline call with argument
    13:42 :noweb - call with argument
    15:49 terminal vs gui - font size
    16:35 org-edit-special (C-c ')
    16:54 company-mode - emacs third-party package
    17:28 :results - code block header argument
    18:52 custom org publish function
    21:06 org-publish
    22:20 final thoughts on confluence editor

  • @MMABeijing
    @MMABeijing 3 года назад

    Ok I want to pick you brains on your video editing :) what did you use to create the sound of the keyboard (unless you actually recorded your keyboard, but somehow I doubt it), also could you tell me what you used to speed up the input at certain moments of the video? thank you forehand!

    • @elspuddo
      @elspuddo  3 года назад

      I recorded the on-screen portions of the video separately from the narration, but I did have my microphone active (and my breath held) while I did it, so it picked up the sounds of my keyboard. I later recorded the narration separately and then edited it into the video timeline.

    • @MMABeijing
      @MMABeijing 3 года назад

      @@elspuddo did you use something special to have the fast-typing effect, or did you simply sped it up with your editing software? (btw which sw do you use for video edition?). But yeah you have a very interesting delivery, I am subbing to your channel just in case you come back to making more videos :), and yesterday night for the first time I tried to use erc/irc as you mentionned in the comment that's where people can find you. I have yet to register my nick properly, I am very new to that, but for what it 's worth you opened one person's eyes to irc, so thank you for that as well:)

    • @elspuddo
      @elspuddo  3 года назад +2

      The fast-typing comes from my keyboard, a Kinesis Advantage 2, which has a macro record/playback capability. So when it's going fast, I'm hitting my macro playback key. I use ScreenFlow on macOS for all my screen capture and video editing. I may try out an all Linux workflow, as I'm interested in trying out Kdenlive. The #emacs channel on Freenode is pretty great, there are very knowledgeable people there!

    • @chrysleague
      @chrysleague 2 года назад

      Haha, I waded into the comments specifically to find anyone talking about the keyboard sound. I was pretty sure I recognized it just by the sound, and indeed I did… I have the Kinesis Advantage 2 as well. It's not just the click of the switches, but the difference in tone on the thumb pads, I think.

    • @MMABeijing
      @MMABeijing 2 года назад

      @@elspuddo belated thank you for the recording tip, I managed to not notice it until today and really appreciate the information. :pray:

  • @lurgreen
    @lurgreen 11 месяцев назад

    that theme are you using? In config file I have found this (load-theme 'modus-vivendi) but it's not that theme.

    • @elspuddo
      @elspuddo  11 месяцев назад

      That's Zenburn with a darkened background.

  • @MMABeijing
    @MMABeijing 3 года назад

    Hi Mike, I am slowly following your tuto, I am now @13:50 and I was wondering if you could explain what the =file - = does. I looked at the file utility help page but I don't think it mentions the =file - = , thanks!

    • @elspuddo
      @elspuddo  3 года назад

      A lot of UNIX utilities that take a filename as an argument will accept a dash ("-") to mean "read from STDIN instead". That's why it says "/dev/stdin:" at the start of the output. Hope this helps!

    • @MMABeijing
      @MMABeijing Год назад

      @@elspuddo thank you ( I thought I had answered your kind explanation last year but I had not, sorry). This video is still a great reference for me, amazing job Mike

  • @dolahn
    @dolahn 22 дня назад

    Would have been helpful if you would have said which command you used to generate the HTML file @ 2:24.

    • @ethernet764
      @ethernet764 5 дней назад

      The command is
      org-export-dispatch (C-c C-e)

  • @izz6190
    @izz6190 4 года назад

    How did you get the asterisk to appear as those orange bubbles?

    • @elspuddo
      @elspuddo  4 года назад +1

      The org-bullets package does that.
      github.com/sabof/org-bullets

    • @izz6190
      @izz6190 4 года назад

      @@elspuddo Oh Actually you can get it from elpa archive. You can find it using M-x list-packages. All I needed was the name thanks! I am not new to emacs but new to org mode, may I contact you if I have more questions?

    • @elspuddo
      @elspuddo  4 года назад

      @@izz6190 If you look carefully, you can spot my email address in the bottom left corner in parts of the video. I'm also on #emacs on Freenode, fire up an IRC client and join us!

  • @MMABeijing
    @MMABeijing 3 года назад

    @9:58 Hi Mike, I followed along but when I try to echo the result of invoking the =hello= function (with "") I am not getting the proper result, I am only getting the string "". When within the code.inc file I can invoke the function hello and access the right message. Any idea? I tried to add the header-args ":noweb yes" but that did not help either. Cheers,

    • @elspuddo
      @elspuddo  3 года назад

      Check out the function "org-babel-lob-ingest" which tells org to add the function in that file to the "Library of Babel". If you look at my config, I have a function called "my-maybe-lob-ingest" which I run as an after-save-hook for Org mode. This makes it so when I save code.inc it automatically adds it to the LOB so you can call hello() from your main document. You'll notice @8:57 when I save it says "2 src blocks added to Library of Babel", that's my after-save-hook.

    • @MMABeijing
      @MMABeijing 3 года назад

      @@elspuddo gotcha, I will use the LOB from now on thank you. Yesterday I finally understood that I could also from and I was quite proud of myself haha, but yes LOB is easier. Thank you for the feedback. I have left issue on your github I was not sure which way you prefer using when giving feedback. Whichever way you prefer, cheers!

    • @elspuddo
      @elspuddo  3 года назад

      @@MMABeijing Very cool, I didn't know you could do that!

  • @kortaffel
    @kortaffel 3 года назад

    cool

  • @MMABeijing
    @MMABeijing 3 года назад

    Hi Mike, I am trying to follow that tutorial, however my orgmode setup is different from yours and your results do not match what I get. Ex: @4:02 when you execute your codeblock within your results there is a nested begin_example, I don't have that. WHen you export in html your results get exported and not mine. Can you point me in the right direction? thank you

    • @elspuddo
      @elspuddo  3 года назад

      Hey, sorry for the confusion on this. In my Emacs configuration I have manipulated the "org-babel-default-header-args" to change the default header args supplied to every code block. You can manually get the same results as me by doing:
      #+BEGIN_SRC shell :results output verbatim replace
      echo "My current working directory is: $(dirs +0)"
      ls -l
      #+END_SRC
      Hope this helps!

    • @MMABeijing
      @MMABeijing 3 года назад

      @@elspuddo It's not working for me :) Right now I m only using fniessen set up file to export to html. I tried your code but it won't output the name of my current file (it does it in orgmode, but not on html). Same thing with the output the codeblock: it is not showing within the html page.

    • @MMABeijing
      @MMABeijing 3 года назад

      update: might be a bug, but in my case the only way to displaying the output of the block is to make sure there is at least a text character between the babel codeblock and the output. Weird:)

    • @MMABeijing
      @MMABeijing 3 года назад

      @@elspuddo I really want to follow along your instructional, do you see any pb with the code below?
      #+NAME: hashobject
      #+begin_src sh :exports both :results output verbatim replace
      echo -n '' | git hash-object --stdin -w
      #+end_src
      #+RESULTS: hashobject
      : 7435a4d4bbd4c88971f2b1929491abd8ca9da3bb
      ------------------
      I don't understand why I am not able to export to html, am I missing something out?

  • @jaderanderson
    @jaderanderson 3 года назад

    My brain melted. Not very good brain