mirror of
https://github.com/correl/correl.github.io.git
synced 2024-12-27 11:07:35 +00:00
Publish "Getting Organized with Org Mode"
This commit is contained in:
parent
f5b9da49d0
commit
e36c2af946
3 changed files with 204 additions and 4 deletions
201
_posts/2014-11-25-getting-organized-with-org-mode.html
Normal file
201
_posts/2014-11-25-getting-organized-with-org-mode.html
Normal file
|
@ -0,0 +1,201 @@
|
|||
---
|
||||
title: Getting Organized with Org Mode
|
||||
author: Correl Roush
|
||||
---
|
||||
<p>
|
||||
<img src="/images/org-mode-unicorn-logo.png" alt="Org mode logo" style="float: right; margin-top: -50px;"/>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
|
||||
<div id="outline-container-sec-1" class="outline-2">
|
||||
<h2 id="sec-1">Project Management</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
Most of what I've been using <a href="http://orgmode.org/">Org mode</a> 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
|
||||
<a href="http://orgmode.org/worg/org-tutorials/org-column-view-tutorial.html">Column View</a>, I was able to dive right into scoping them individually
|
||||
and reporting total estimates for each major segment of work.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<img src="/images/emacs-projects.png" alt="Example projects org file"/>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-sec-2" class="outline-2">
|
||||
<h2 id="sec-2">Organizing Notes and Code Exercises</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
More recently, I've been looking into various ways to get more
|
||||
things organized with Org mode. I've been stepping through
|
||||
<a href="http://sarabander.github.io/sicp/">Structure and Interpretation of Computer Programs</a> with some other
|
||||
folks from work, and discovered that Org mode was an ideal fit for
|
||||
keeping my notes and exercise work together. The latter is neatly
|
||||
managed by <a href="http://orgmode.org/worg/org-contrib/babel/intro.html">Babel</a>, which let me embed and edit source examples and
|
||||
my excercise solutions right in the org document itself, and even
|
||||
export them to one or more scheme files to load into my
|
||||
interpreter.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-sec-3" class="outline-2">
|
||||
<h2 id="sec-3">Exporting and Publishing Documents</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
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 <a href="https://github.com/correl/sicp">SICP notes</a> to html and <a href="http://sicp.phoenixinquis.net/">dropped them into a site</a> built
|
||||
with <a href="http://jekyllrb.com/">Jekyll</a>. Embedding graphs and diagrams into exported documents
|
||||
using <a href="http://www.graphviz.org/">Graphviz</a>, <a href="http://www.mcternan.me.uk/mscgen/">Mscgen</a>, and <a href="http://plantuml.sourceforge.net/">PlantUML</a> has also really helped with
|
||||
putting together some great project plans and documentation. A lot of
|
||||
great examples using those tools (and more!) can be found <a href="http://home.fnal.gov/~neilsen/notebook/orgExamples/org-examples.html">here</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-sec-4" class="outline-2">
|
||||
<h2 id="sec-4">Emacs Configuration</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<p>
|
||||
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 <a href="https://github.com/correl/dotfiles/tree/master/.emacs.d">Emacs
|
||||
configuration</a>. 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, <a href="http://zeekat.nl/articles/making-emacs-work-for-me.html">"Making Emacs Work For Me"</a>, and later by
|
||||
others such as <a href="http://pages.sachachua.com/.emacs.d/Sacha.html">Sacha Chua's Emacs configuration</a>, 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 <a href="https://github.com/correl/dotfiles/blob/master/.emacs.d/emacs.org">published document</a> on
|
||||
GitHub. I've still got a directory lying around with autoloaded
|
||||
scripts, but now it's simply reserved for <a href="https://github.com/correl/dotfiles/blob/master/.emacs.d/emacs.org#auto-loading-elisp-files">tinkering and sensitive
|
||||
configuration</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-sec-5" class="outline-2">
|
||||
<h2 id="sec-5">Tracking Habits</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
<p>
|
||||
Another great feature of Org mode that I've been taking advantage
|
||||
of a lot more lately is the <a href="http://orgmode.org/manual/Agenda-Views.html">Agenda</a>. By defining some org files as
|
||||
being agenda files, Org mode can examine these files for TODO
|
||||
entries, scheduled tasks, deadlines and more to build out useful
|
||||
agenda views to get a quick handle on what needs to be done and
|
||||
when. While at first I started by simply syncing down my google
|
||||
calendars as org-files (using <a href="http://orgmode.org/worg/code/awk/ical2org.awk">icadl2org.awk</a>), I've started
|
||||
managing TODO lists in a dedicated org file. By adding tasks to
|
||||
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) <i>when</i> I need to get them done.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<img src="/images/emacs-org-agenda.png" alt="Agenda view snippet"/>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
This works not only for one-shot tasks, but also <a href="http://orgmode.org/manual/Tracking-your-habits.html">habits and other
|
||||
repetitive tasks</a>. It's possible to schedule a task that should be
|
||||
done every day, every few days, or maybe every first sunday of a
|
||||
month. For example, I've set up repeating tasks to write a blog
|
||||
post at least once a month, practice guitar every two to three
|
||||
days, and to do the dishes every one or two days. The agenda view
|
||||
can even show a small, colorized graph next to each repeating task
|
||||
that paints a picture of how well (or not!) I've been getting
|
||||
those tasks done on time.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-sec-6" class="outline-2">
|
||||
<h2 id="sec-6">Keeping a Journal and Tracking Work</h2>
|
||||
<div class="outline-text-2" id="text-6">
|
||||
<p>
|
||||
The last thing I've been using (which I'm still getting a handle
|
||||
on) is using <a href="http://orgmode.org/manual/Capture.html">Capture</a> to take and store notes, keep a journal, and
|
||||
even <a href="http://orgmode.org/manual/Clocking-work-time.html">track time on tasks at work</a>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
|
||||
<pre class="src src-emacs-lisp"><span style="color: #2aa198;">(</span><span style="color: #a7aac0;">setq</span> <span style="color: #e0d0a0;">org-capture-templates</span>
|
||||
'<span style="color: #b58900;">(</span><span style="color: #268bd2;">(</span><span style="color: #2aa198;">"j"</span> <span style="color: #2aa198;">"Journal Entry"</span> <span style="color: #a3e0a0;">plain</span>
|
||||
<span style="color: #6c71c4;">(</span><span style="color: #b6a0e0;">file+datetree</span> <span style="color: #2aa198;">"~/org/journal.org"</span><span style="color: #6c71c4;">)</span>
|
||||
<span style="color: #2aa198;">"%U\n\n%?"</span> <span style="color: #839496; font-weight: bold;">:empty-lines-before</span> <span style="color: #9999bb;">1</span><span style="color: #268bd2;">)</span>
|
||||
<span style="color: #268bd2;">(</span><span style="color: #2aa198;">"w"</span> <span style="color: #2aa198;">"Log Work Task"</span> <span style="color: #e0d0a0;">entry</span>
|
||||
<span style="color: #6c71c4;">(</span><span style="color: #b6a0e0;">file+datetree</span> <span style="color: #2aa198;">"~/org/worklog.org"</span><span style="color: #6c71c4;">)</span>
|
||||
<span style="color: #2aa198;">"* TODO %^{Description} %^g\n%?\n\nAdded: %U"</span>
|
||||
<span style="color: #839496; font-weight: bold;">:clock-in</span> <span style="color: #a0d6e0;">t</span>
|
||||
<span style="color: #839496; font-weight: bold;">:clock-keep</span> <span style="color: #a0d6e0;">t</span><span style="color: #268bd2;">)</span><span style="color: #b58900;">)</span><span style="color: #2aa198;">)</span>
|
||||
|
||||
<span style="color: #2aa198;">(</span><span style="color: #b3c0a7;">global-set-key</span> <span style="color: #b58900;">(</span><span style="color: #99bbb4;">kbd</span> <span style="color: #2aa198;">"C-c c"</span><span style="color: #b58900;">)</span> '<span style="color: #a6bb99;">org-capture</span><span style="color: #2aa198;">)</span>
|
||||
|
||||
<span style="color: #2aa198;">(</span><span style="color: #a7aac0;">setq</span> <span style="color: #9999bb;">org-clock-persist</span> '<span style="color: #a7c0b9;">history</span><span style="color: #2aa198;">)</span>
|
||||
<span style="color: #2aa198;">(</span><span style="color: #9999bb;">org-clock-persistence-insinuate</span><span style="color: #2aa198;">)</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
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,
|
||||
month and date.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
For work tasks, I have another capture template configured that
|
||||
will log and tag a task into another org file, also organized by
|
||||
date, which will automatically start tracking time for that
|
||||
task. Once done, I can simply clock out and check the time I've
|
||||
spent, and can easily find it later to clock in again, add notes,
|
||||
or update its status. This helps me keep track of what I've gotten
|
||||
done during the day, keep notes on what I was doing at any point
|
||||
in time, and get a better idea of how long it takes me to do
|
||||
different types of tasks.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-sec-7" class="outline-2">
|
||||
<h2 id="sec-7">Conclusion</h2>
|
||||
<div class="outline-text-2" id="text-7">
|
||||
<p>
|
||||
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. 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!
|
||||
</p>
|
||||
|
||||
<p>
|
||||
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 <a href="http://sachachua.com/blog/">Sacha Chua's Blog</a>, as well as
|
||||
posts from <a href="http://newartisans.com/2007/08/using-org-mode-as-a-day-planner/">John Wiegley</a>. 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!
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
|
@ -3,16 +3,15 @@
|
|||
#+STARTUP: indent
|
||||
#+OPTIONS: toc:nil num:nil
|
||||
|
||||
#+ATTR_HTML: style="float: right; margin-top: -50px;"
|
||||
[[img:org-mode-unicorn-logo.png][Org mode logo]]
|
||||
|
||||
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
|
||||
<!--more-->
|
||||
#+END_HTML
|
||||
|
||||
* Project Management
|
||||
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
|
BIN
images/org-mode-unicorn-logo.png
Normal file
BIN
images/org-mode-unicorn-logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.7 KiB |
Loading…
Reference in a new issue