diff --git a/_drafts/getting-organized-with-org-mode.org b/_drafts/getting-organized-with-org-mode.org index cb28b3d..4fd4b87 100644 --- a/_drafts/getting-organized-with-org-mode.org +++ b/_drafts/getting-organized-with-org-mode.org @@ -3,17 +3,32 @@ #+STARTUP: indent #+OPTIONS: toc:nil num:nil +I've been using Emacs Org mode for nearly a year now. For a while I +mostly just used it to take and organize notes, but over time I've +discovered it's an incredibly useful tool for managing projects and +tasks, writing and publishing documents, keeping track of time and +todo lists, and maintaining a journal. + +#+BEGIN_HTML + +#+END_HTML + * Project Management -I've been using Emacs Org mode for nearly a year now, mostly as a -tool for breaking down large projects at work into tasks and -subtasks, and found it to be extremely enter projects in as a -hierarchy of tasks and task groupings. Using columnview, I was able -to dive right into scoping them individually and reporting total -estimates for each major segment of work. Because Emacs and Org -Mode make building and modifying an outline structure like this so -quick and easy, I'd build and modify the project org document as I -planned it out with my team. Once done, I'd then manually load that -information into our issue tracker and get underway. +Most of what I've been using [[http://orgmode.org/][Org mode]] for has been breaking down large +projects at work into tasks and subtasks. It's really easy to enter +projects in as a hierarchy of tasks and task groupings. Using +[[http://orgmode.org/worg/org-tutorials/org-column-view-tutorial.html][Column View]], I was able to dive right into scoping them individually +and reporting total estimates for each major segment of work. + +[[img:emacs-projects.png][Example projects org file]] + +Because Org Mode makes building and modifying an outline structure +like this so quick and easy, I usually build and modify the project +org document while planning it out with my team. Once done, I then +manually load that information into our issue tracker and get +underway. Occasionally I'll also update tags and progress status in +the org document as well as the project progresses, so I can use the +same document to plan subsequent development iterations. * Organizing Notes and Code Exercises More recently, I've been looking into various ways to get more things organized with Org mode. I've been stepping through @@ -27,23 +42,26 @@ interpreter. * Exporting and Publishing Documents Publishing my notes with org is also a breeze. I've published project plans and proposals to PDF to share with colleagues, and -exported my SICP notes to html and dropped them into a site built +exported my [[https://github.com/correl/sicp][SICP notes]] to html and [[http://sicp.phoenixinquis.net/][dropped them into a site]] built with [[http://jekyllrb.com/][Jekyll]]. Embedding graphs and diagrams into exported documents using [[http://www.graphviz.org/][Graphviz]], [[http://www.mcternan.me.uk/mscgen/][Mscgen]], and [[http://plantuml.sourceforge.net/][PlantUML]] has also really helped with -putting together some great project plans and documentation. +putting together some great project plans and documentation. A lot of +great examples using those tools (and more!) can be found [[http://home.fnal.gov/~neilsen/notebook/orgExamples/org-examples.html][here]]. * Emacs Configuration -While learning all the cool things I could do with Org mode and -Babel, it was only natural I'd end up using it to reorganize my -Emacs configuration. Up until that point, I'd been managing my -configuration in a single init.el file, plus a directory full of -mode or purpose-specific elisp files that I'd loop through and -load. Inspired primarily by the blog post, [[http://zeekat.nl/articles/making-emacs-work-for-me.html]["Making Emacs Work For -Me"]], and later by others such as [[http://pages.sachachua.com/.emacs.d/Sacha.html][Sacha Chua's Emacs configuration]], -I got all my configs neatly organized into a single org file that -gets loaded on startup. I've found it makes it far easier to keep -track of what I've got configured, and gives me a reason to -document and organize things neatly now that it's living a double -life as a [[https://github.com/correl/dotfiles/blob/master/.emacs.d/emacs.org][published document]] on GitHub. +While learning all the cool things I could do with Org mode and Babel, +it was only natural I'd end up using it to reorganize my [[https://github.com/correl/dotfiles/tree/master/.emacs.d][Emacs +configuration]]. Up until that point, I'd been managing my configuration +in a single init.el file, plus a directory full of mode or +purpose-specific elisp files that I'd loop through and load. Inspired +primarily by the blog post, [[http://zeekat.nl/articles/making-emacs-work-for-me.html]["Making Emacs Work For Me"]], and later by +others such as [[http://pages.sachachua.com/.emacs.d/Sacha.html][Sacha Chua's Emacs configuration]], I got all my configs +neatly organized into a single org file that gets loaded on +startup. I've found it makes it far easier to keep track of what I've +got configured, and gives me a reason to document and organize things +neatly now that it's living a double life as a [[https://github.com/correl/dotfiles/blob/master/.emacs.d/emacs.org][published document]] on +GitHub. I've still got a directory lying around with autoloaded +scripts, but now it's simply reserved for [[https://github.com/correl/dotfiles/blob/master/.emacs.d/emacs.org#auto-loading-elisp-files][tinkering and sensitive +configuration]]. * Tracking Habits Another great feature of Org mode that I've been taking advantage of a lot more lately is the [[http://orgmode.org/manual/Agenda-Views.html][Agenda]]. By defining some org files as @@ -57,6 +75,8 @@ this file, scheduling them, and setting deadlines, I've been doing a much better job of keeping track of things I need to get done and (even more importantly) /when/ I need to get them done. +[[img:emacs-org-agenda.png][Agenda view snippet]] + This works not only for one-shot tasks, but also [[http://orgmode.org/manual/Tracking-your-habits.html][habits and other repetitive tasks]]. It's possible to schedule a task that should be done every day, every few days, or maybe every first sunday of a @@ -71,6 +91,23 @@ The last thing I've been using (which I'm still getting a handle on) is using [[http://orgmode.org/manual/Capture.html][Capture]] to take and store notes, keep a journal, and even [[http://orgmode.org/manual/Clocking-work-time.html][track time on tasks at work]]. +#+BEGIN_SRC emacs-lisp :exports code + (setq org-capture-templates + '(("j" "Journal Entry" plain + (file+datetree "~/org/journal.org") + "%U\n\n%?" :empty-lines-before 1) + ("w" "Log Work Task" entry + (file+datetree "~/org/worklog.org") + "* TODO %^{Description} %^g\n%?\n\nAdded: %U" + :clock-in t + :clock-keep t))) + + (global-set-key (kbd "C-c c") 'org-capture) + + (setq org-clock-persist 'history) + (org-clock-persistence-insinuate) +#+END_SRC + For my journal, I've configured a capture template that I can use to write down a new entry that will be stored with a time stamp appended into its own org file, organized under headlines by year, @@ -87,12 +124,19 @@ in time, and get a better idea of how long it takes me to do different types of tasks. * Conclusion There's a lot that can be done with Org mode, and I've only just -scratched the surface. The simple outline format provided by Org -mode lends itself to doing all sorts of things, be it organizing -notes, keeping a private or work journal, or writing a book or -technical document. There's tons of functionality that can be -built on top of it, yet the underlying format itself remains -simple and easy to work with. I've never been great at keeping -myself organized, but Org mode is such a delight to use that I -can't help trying anyway. If it can work for me, maybe it can work -for you, too :) +scratched the surface. The simple outline format provided by Org mode +lends itself to doing all sorts of things, be it organizing notes, +keeping a private or work journal, or writing a book or technical +document. I've even written this blog post in Org mode! There's tons +of functionality that can be built on top of it, yet the underlying +format itself remains simple and easy to work with. I've never been +great at keeping myself organized, but Org mode is such a delight to +use that I can't help trying anyway. If it can work for me, maybe it +can work for you, too! + +There's tons of resources for finding new ways for using Org mode, and +I'm still discovering cool things I can track and integrate with it. I +definitely recommend reading through [[http://sachachua.com/blog/][Sacha Chua's Blog]], as well as +posts from [[http://newartisans.com/2007/08/using-org-mode-as-a-day-planner/][John Wiegley]]. I'm always looking for more stuff to try +out. Feel free to drop me a line if you find or are using something +you think is cool or useful! diff --git a/images/emacs-org-agenda.png b/images/emacs-org-agenda.png new file mode 100644 index 0000000..9870576 Binary files /dev/null and b/images/emacs-org-agenda.png differ diff --git a/images/emacs-projects.png b/images/emacs-projects.png new file mode 100644 index 0000000..0026c56 Binary files /dev/null and b/images/emacs-projects.png differ