This looks really good! I used to use org mode as part of my daily workflow, but now that I don't have to submit timesheets I've got out of the habit.
At the time, though, it was wonderful. Once I'd spent some time getting used to org-clock, it becamse a much less intrusive workflow than switching apps to log time. Plus, you get beautiful tables at the end of it detailing your day, and all your notes for each item if you need them.
I even wrote some (probably terrible) elisp to collect my day's time data and post the items to our timesheet API. Mainly so I could show off to my colleagues, but also something I would never even attempt in Vim.
Hmmm. Personally I'm currently using Toggl: even though the backend is proprietary, the Mac tool is lightweight, well designed and, curiously, open source. However, I could use some divorce from proprietary services sucking up my detailed time records.
Could anyone please comment as to how Org-clock's recording interface compares to Toggl? Especially, can it respect me going afk and count it as a break after five minutes? Toggl has a great dialog for this, amounting to ‘stop or continue.’ As for the reporting side, I mostly need just a summary of my time-wasting achievements over a week.
I suppose that Org-clock doesn't leave the confines of Emacs itself? Which must limit its abilities in measuring the activity.
See the variable "org-clock-idle-time". This is Emacs, so of course there is an option.
I'm not sure if I would use org-clock unless I were already programming in Emacs, but since that's mostly what I'm doing, it works great to keep track of contracting time.
Personally I could see myself using org-clock in isolation, even if just for the fact that I end up with a non-proprietary log. I've lost too much history to various different tools (some of them turned out less than ideal, some just went belly-up).
It's difficult to know though, because I started using org-clock alongside org-mode, and if you combine time-tracking with outlining, journalling, todo/project management, and a calendar, all of it well integrated, it's hard to imagine switching to something else.
EDIT: also, just remembered that one reason I quite using Toggl was that clocktables turned out much more powerful for analyzing/reporting my hours.
Now that I think of it, system-wide idle time is available on Macs via a terminal command, or on the three platforms with a few lines of C (https://github.com/anaisbetts/node-system-idle-time). So I guess that's solvable. A system-wide popup might be harder, though.
There are so many fantastic Org mode tutorials for users already familiar with Emacs. My goal here was to show users who've never touched Emacs before - and might be a little scared of it! - that it isn't really that hard. Most tutorials I've seen jump straight into configuring the agenda keyboard shortcut in a users Emacs configuration file. This would put the uses I'm trying to reach off straight away.
I intend a follow up article where keyboard shortcuts are used - and enforce they are a big part of the reason that Org mode can be so much more efficient than other task management solutions.
Nice write up! I have been using Emacs for several decades but I am a novice at org mode. Your article is at the right level of detail for Emacs newbies.
Off topic, but: as another commenter mentioned, iOS is a pain point for me also. Best I can do is keep .org files in DropBox and edit/view using Textastic.
Have you seen the Beorg app for iOS? This post is on the app’s website, though it’s not obvious. :) I’ve been using Beorg for a few months now and it is simply the BEST. Very active development, feature rich, slick UI, flexible syncing, etc.
As I read your article and comments I was thinking that it might be interesting to doing the same tut in VS Code (though org-mode was pretty limited in it the last time I tried). It would feel a bit less awkward for the user and you'll do the org community a service by decoupling the org tutorials from Emacs.
I very much appreciate the approach! While I wouldn't say I was scared per se, I definitely ran up against the learning curve. I'll get going with org mode again asap.
For me, the main drawback with emacs in the terminal is that Ctrl-Backspace is the same as Ctrl-h. I use both for their separate functions a lot. It's very often that I use Ctrl-Backspace to delete the word I just typed, and C-h to see documentation. I do use emacs in the terminal sometimes and in those cases I use M-b M-d when I want Ctrl-Backspace, but it's not as convenient.
You can configure your terminal to send ^? instead of ^H (and use `stty erase '^?'` to configure your tty), but AFAIK there's no difference in the terminal between holding control while hitting backspace and not holding control (whether you have it set up to send the ^H or ^?), because of how keys map to ascii codes (see [0]).
Your terminal either sends ^H (0x08) or ^? (0x3f) (or really anything else you desire, if you can set up your terminal that way) when you hit backspace. control plus either of those keys would mean subtracting 0x40 from them, which is either negative or wraps around for both of them, so it's nonsensical.
Whereas, the GUI interprets the keyboard completely differently and allows you to express keys like "control + backspace". This is the main reason I prefer using gui versions of Emacs.
I've been using Org Mode ever since I saw that Literate DevOps presentation... and I'm not even in DevOps at all. It's just that using emacs and Org Mode creates the most usable documentation for recording what I've figured out and done that I've ever seen.
I'm sort of surprised it's not more popular because the productivity gains are pretty damn amazing.
I recently experimented with using org-babel blocks with AWS Athena queries in them (and evaluating them into :result blocks with C-c C-c) instead of putting the queries into my shell history.
The nice thing about this setup is I can keep notes really easily alongside the queries, and the output is right there in the :results blocks. It's kind of like a jupyter / ipython notebook, but for _any command_.
If someone isn't quite ready for org-mode, but wants to try a lightweight todo list (and more) with some powerful features, there's the todo.txt format, which works with a variety of tools. (Or you might use org-mode for work projects, but todo.txt for personal.)
I use just plain text file opened in plain text editor with following conventions:
# Topic
[ ] A task. @tag #ticket
[ ] A subtask.
[ ] A sub-sub-task.
[+] Completed task.
[-] Failed task.
[.] Partially completed task. WIP.
[!] Urgent task.
[^] High priority task.
Easy to store. Easy to share. Easy to edit at any device with plain text editor.
The only feature I miss is grouping of sub-tasks. For example, I may want to group all subtasks from all projects(topics), which I need to do at place X (e.g. at parents home), so I will prepare for them. I cannot select them all without using of SQL engine or grep like tool. If editor can highlight a search term, it helps, but for long lists it easy to miss.
keep going, you are 90% there to having a Markdown todo list like me! just use a dash and a space before the brackets and use "x" to indicate they are done. If you render the markdown in a browser you can use a mouse to click the checkboxes. Check out a markdown cheat sheet for more details.
Granted, you won't be able to use your special characters in the brackets..
IMHO, a preprocessor can be used to convert from square-brackets format into markdown format, e.g. to highlight urgent and high priority entries with different colors. Sometimes, I need to share my TODO list with a manager. However, even in it plain form, it works well. IMHO, same can be done with todo.txt and org-mode files.
Can you share more about how you generate HTML from your markdown, and how you share result, please?
Using an outliner without shortcuts that operate on outline nodes is rather akin to hitting a nail with a microscope. An outliner is fantastic when it can add and reorder nodes quickly and smoothly, so putting your thoughts in it is almost effortless. Marking an outline by hand is a dubious pastime, and by extension comparing Org to plain-text organization is questionable: the benefit will be simply overlooked and misunderstood.
But I’m beginning to think the correct solution for emacs org mode on iOS is something where I have a server running emacs with all my configurations and customizations, while the app is just a dumb ui that sends the commands to the server for processing. Beorg, or any app that isn’t a full blown emacs implementation (which will never be allowed in the Apple app Store) will never be able to fit my customized workflow fully
Edit: just noticed there’s no mention of beorg in the article so my comment might seem a little schizophrenic :-p
I'm not so sure that Apple wouldn't allow Emacs on the App Store - they are a lot more pragmatic than they used to be. There is a project called iSH which is currently on TestFlight - it gives you Linux via a usermode x86 emulator. It would be strange for Apple to approve for TestFlight if there was no chance of it ever being approved for the App Store.
Beorg is halfway there with a sweet little Scheme REPL that you can use to customize the app and write scripts. If anyone makes a full-blown emacs for iOS that works well, I will buy it.
I am surprised that nobody mentioned spacemacs[1] and its org-mode support. If you are used to vim shortcuts but want to give a chance to fully-supported org-mode, you should definitely try spacemacs.
Still, I don't think I am ever going to use spacemacs to write code, but for note-taking(with inline LaTeX preview)/todo/calendar, I am 100% happy with it.
+1 to this, coming from vim I found spacemacs' defaults pretty painless.
I only use it for org-mode right now, still do most of my heavy editing in other tools but it's already been extremely useful for note-taking and todo tracking.
I can also recommend pandoc[1], I've used it to convert some org-mode documents into various wiki/markdown formats for presenting to others.
I want to like spacemacs, I really do, but using spacemacs is like having a bipolar cat. One moment it is nice and warm and cuddly, the next moment it's randomly knifing you and trying to assert dominance by missing the box.
Spacemacs doesn't magically liberate you from having to learn Emacs - it simply makes certain things more obvious, but also it obscures some other things. Be patient with it and you'll be rewarded.
Whenever something breaks on my config due to an upstream change (a package gets updated with a breaking change) it usually takes me less than 2 minutes to triage that and find a workaround. It doesn't happen very often and I update packages multiple times a week.
> Spacemacs doesn't magically liberate you from having to learn Emacs
Understandable, and not an issue for me.
My first issue was that there is an error from the start in the main version. That bug was fixed, but syl20bnr refused to do a hotfix. To make matters worse the main download that a new user gets is 13 months old at this point.
So a new user can either install the hotfix themselves or move to the dev branch. A new user isn't informed that they should just be on the dev branch and that due amount of changes since the last main branch release that the new user is better off deleting everything and starting over straight from the dev branch.
experienced users know: it's better to be in development branch than in master. Sadly that's is the current state of affairs with Spacemacs. Development branch ironically is more stable - yes, things break sometimes, but they also get fixed rather quickly. AFAIK maintainers currently working on the next stable release and trying to figure out better strategies to move forward.
I mostly use Spacemacs for org-mode, but I've found it quite useful for the occasional remote ssh session (TRAMP). Can highly recommend that.
I'm also considering playing around with the interactive shell, in particular for various scripts and whatnot, and I'm thinking of broadening my horizon a bit more. Could the Emacs experts in here give me some suggestions as to what might be good next steps, alongside the shell stuff?
I love articles that explain by providing examples with how to click via a menu. I use the keyboard extensively, but learn via menu items, mouse clicks, ... first, only then will I find shortcuts to do things I want to do.
Slightly off topic, but I love the Org-mode feature of [[A link description][file:~/my-file::a line in the file]] style links. Is there an easy way to get just that feature in all my files? I'd love to be able to have Org links in code comments, for example, but I don't want to use Org code blocks.
The rumor is, there's an ‘org-protocol’ feature that allows any program on the system call actions of Org-mode. Presumably that either includes opening files, or would include if someone added such an action.
For reference, it is possible to do the same thing completely from the top level menu option “Options”/“Customize Emacs”/“Top-level Customization Group”:
From there, click “Editing”, then “Mouse”, then scroll down to “Mouse Wheel Progressive Speed” and click the arrow at the start of the line to fold out that option. Then do as described above; i.e. toggle the option off and click the “State” button menu and choose “Save for Future Sessions”.
org mode is a nice place to write a resume or quick white paper. It’s easy to embed sequence diagrams with plant uml. Then send it to html or pdf, but I’d like to have an export to ms word or google docs for sharing. I know you can copy and paste the html output, but the styling comes out wrong in word. I want the word default Title 1,2,3 styling.
...any tip on getting that working faster? (it takes seconds!!!) I generally prefer to edit the plantuml markup and see the diagram update instantly (like ~<200ms) on the other half split. This is the workflow I have with VSCode + Markdown Preview Enhanced.
I prefer org mode deeper structure instead of markdown, but this kinds of usability stuff (there's also horrible latex formulas rendering, a thousand small papercuts that are fixable but nobody has time for that). From a practical perspective nothing just works out-of-the box the way I want on Emacs, and I'm just to lazy to properly customize everything...
I assume those seconds are mainly JVM startup time. The existing ob-plantuml doesn't support sessions, so it evaluates every code block in a new instance of plantuml. Seems to me like should be possible to use the `-pipe`-option for plantuml so that you can send multiple code blocks to the same instance via stdin and get the images back via stdout. That's probably what VSCode does, but it doesn't seem like anyone has bothered to write that for Emacs so far.
Just to expand on this, as a direct org -> docx conversion might not deliver what is desired, it's easy to create your own docx template for Pandoc. You can add a keyboard shortcut to call Pandoc using that template with the current file.
Depending on your point of view, Org mode has the advantage of being plain text and free software. It is a system you could still be using in 10-15 years time. Todoist might be have bought by Microsoft (or similar) by then and discontinued. This is probably a good reason why Org mode is appealing to academics who may be on a research project for many years - you need to be using something that is going to stay the course.
Org mode does a lot more than Todoist (literate programming, spreadsheet features which I personally use in project proposals for calculating costings, exporting complex documents, logging time, ...) However all that power might be a distraction depending on what you need the tool for :)
I used to use org-mode as a task manager/calendar. As you can see from the manual[1], it has features that overlap with Evernote more than Todoist.
Todoist works well as a way to capture things that need future processing during the busy times of your day, and for getting notifications, but it is limited beyond that. {Disclosure: I'm a current Todoist Premium user and use it heavily.}
Despite being shocked (maybe it's not the right word) by the keyboardless use, I just want to add that for mobile users there is orgzly which allows you to access your org files.
Maybe you didn't notice, but the domain this tutorial is hosted on is for the iOS app "beorg", which allows you to access and edit .org files via iCloud/Dropbox/WebDAV/Box (though Box requires an in-app purchase).
Still one of just a few good outliners on Android. Weird that the field is so sparsely occupied: good fast outliners were in use on Windows in early 2000s, but it took until Workflowy for more people to get interested.
Ha! That is a very apt description. My wife feels quite overwhelmed by ours at the moment. We can just about squeeze in to get to the piles of Play-Doh and the washing machine.
I never stopped to think that a utility room was a British thing :)
At the time, though, it was wonderful. Once I'd spent some time getting used to org-clock, it becamse a much less intrusive workflow than switching apps to log time. Plus, you get beautiful tables at the end of it detailing your day, and all your notes for each item if you need them.
I even wrote some (probably terrible) elisp to collect my day's time data and post the items to our timesheet API. Mainly so I could show off to my colleagues, but also something I would never even attempt in Vim.
Edit: found it! https://pastebin.com/6EksUxAh