Evil plans

Curious about anything? Contact me at sacha@sachachua.com . SVG only, so you'll need a browser with SVG support. Web: http://sachachua.com/evil-plans Raw file: evil-plans.org

Additional notes: http://sachachua.com/blog/2014/03/reflecting-goals-time/

Current goals

See raw file or end of document for code.

Sorry, your browser does not support SVG.

Including "Someday" goals

See raw file or end of document for code.

Sorry, your browser does not support SVG.

Table

GOALCATEGORY XP TODO ITEM
Health 10 SOMEDAY * restart jogging with W-
Health 20 SOMEDAY * develop habit of biking safely and comfortably in winter (>= -5C, < 20km wind, not much ice or snow)
Health 50 SOMEDAY * graduate from introductory exercise ladder
Life 20 WAITING ** deal with rough patches with grace
Life 100 WAITING ** enjoy middle age
Life 10 WAITING ** respond with tranquility in the face of my mortality
Life 20 WAITING ** respond with tranquility in the face of sickness
Life 30 WAITING ** respond with tranquility in the face of the death of someone close to me
Life 100 WAITING ** enjoy old age
Life 5 WAITING ** get Canadian passport
Life 10 SOMEDAY ** find a cat sitter we can trust
Life 10 SOMEDAY ** set up distinctly interesting memories for four months straight
Life 30 SOMEDAY ** get driver's license?
Analysis 5 SOMEDAY ** visualize ideas over a year
Analysis 20 SOMEDAY ** use animations to understand data
Learning 10 SOMEDAY ** read the visual dictionary
Writing 50 SOMEDAY ** develop ability to look at my writing with strangers' eyes
Writing 50 SOMEDAY ** cut writing ruthlessly
Writing 50 SOMEDAY ** write in bigger chunks
Writing 100 SOMEDAY ** write a book instead of compiling it
Writing 100 SOMEDAY ** habitually write books (>= 3 books in 5 years)
Writing 50 SOMEDAY ** habitually write mini-guides (>= 4 mini-guides in 2 years)
Speaking 10 SOMEDAY ** make videos part of the way I regularly share (~12 original videos a year)
Drawing 10 SOMEDAY ** find or make digital equivalent of index card drawing
Drawing 20 SOMEDAY ** draw recognizable people
Programming 5 SOMEDAY ** set up smooth cross-referencing between blog posts and Flickr
Programming 5 SOMEDAY ** set up autocomplete
Programming 5 SOMEDAY ** set up flychecking
Programming 5 SOMEDAY ** make test-driven development part of my normal workflow
Programming 5 SOMEDAY ** get the hang of a CSS framework
Programming 5 SOMEDAY ** get the hang of a CSS preprocessor
Programming 5 SOMEDAY ** get the hang of a Javascript preprocessor
Programming 5 SOMEDAY ** help other people program more effectively
Programming 10 SOMEDAY ** close an open source issue
Programming 10 SOMEDAY ** contribute to open source documentation
Programming 20 SOMEDAY ** get feedback from coaches or open source community
Programming 20 SOMEDAY ** contribute to Emacs C
Programming 10 SOMEDAY ** contribute automated tests to Emacs packages
Writing 30 SOMEDAY ** write book about 5-year experiment to capture memories and help other people curious about it
Writing 50 SOMEDAY ** write a set of three or four 4-part courses
Life 10 SOMEDAY ** create four major projects in 2015
Writing 20 SOMEDAY ** write mini-book on building Emacs habits
Drawing 5 SOMEDAY ** make Sketchnotes 2014
Cooking 5 SOMEDAY ** make paella
Cooking 5 SOMEDAY ** make special types of bread, including sourdough
Cooking 5 TODO ** make udon noodles from scratch
Cooking 10 SOMEDAY ** competently make pizza
Cooking 10 SOMEDAY * make braising and other fancy cooking terms part of my vocabulary
Cooking 10 SOMEDAY * adjust the feel of things by using herb combinations
Cooking 10 TODO * develop a habit of cooking with lots of vegetables (CSA-like volume)
Cooking 10 SOMEDAY * create monthly cycles for favourite recipes
Cooking 20 SOMEDAY * cut standard sizes
Learning 10 TODO ** work through the Japanese language books we have at home
Learning 10 SOMEDAY ** Japanese: Listen to regular shows with >=80% comprehension
Learning 10 SOMEDAY ** Japanese: Listen to tech talks with >=80% comprehension
Learning 10 SOMEDAY ** Japanese: Listen to cooking shows with >=80% comprehension
Learning 10 SOMEDAY ** Japanese: Read blog posts and tweets about tech with >=80% comprehension
Learning 10 SOMEDAY ** Japanese: Read cooking instructions on packages with >=80% comprehension
Learning 10 TODO ** Japanese: Complete Anki decks for JP-2000
Connecting 5 TODO * host another 10 episodes of Emacs Chats or hangouts
Connecting 20 WAITING * do right by our cats
Connecting 50 WAITING * complete the rest of the F projects
Connecting 100 WAITING * help p with t
Connecting 100 WAITING * do right by W- and J-
Connecting 10 TODO * develop a 4+-month habit of frequent messages to parents
Learning 30 SOMEDAY * post notes and life changes from three months of working with a coach
Connecting 10 SOMEDAY * have a regular plan for meeting friends at least one weekend every month
Finance 10 WAITING * sell stocks in a non-registered account and properly account for them
Finance 10 TODO * re-examine spending and carve out more for what matters
Finance 20 WAITING * weather a bear market with lots of investments
Finance 20 WAITING * move to target allocation
Finance 30 WAITING * reach 2% goal
Finance 10 WAITING * reach 2.5% goal
Business 50 WAITING * deal with a famine year without panicking
Connecting 20 WAITING * resolve estate amicably or walk away from it
Writing 10 SOMEDAY * develop structures for journaling
Learning 10 TODO * create syntopicon/bibliography
Writing 10 WAITING * keep a year of private journals (short entries)
Connecting 20 TODO * set up regular Emacs hangouts
       

Goals   goal

maintain or improve my health

So that I can live an awesome life

SOMEDAY restart jogging with W-   Health

SOMEDAY develop habit of biking safely and comfortably in winter (>= -5C, < 20km wind, not much ice or snow)   Health

SOMEDAY graduate from introductory exercise ladder   Health

live an awesome life

TODO do a 5-year experiment in self-directed living

so that I can live an awesome life

2012-2017

Questions to resolve:

  • Would I prefer the structure of a regular career, or can I learn how to make the most of a more self-directed life?
  • Do I understand my wants and needs enough to manage my finances with reasonable safety?

More information: http://sachachua.com/blog/experiment

What could "awesome" look like?

  • Good handle on expenses, resisted lifestyle inflation
  • Expenses covered by dividends/capital gains, with a reasonable buffer for the next correction (and so that I can buy the next time stocks go on sale)
  • Be the kind of happy, loving, equanimous person I want to be
  • Icing on the cake:
    • Tickled brain from learning lots of things
    • Good karma from helping lots of people
    • Scaling up (building resources)
  • Confederates whom I know well and am in touch with

What kind of concrete actions or projects will move me towards that? What kinds of things do I want to explore?

  • E-book publishing: Easy to do once I have a clear idea of what I want to put together. I like pay-what-you-want.
  • Print publishing: Doable with LaTeX and CreateSpace.
  • Useful, organized non-fiction
  • A way for people to self-identify as tribe members (ex: e-book purchases, mailing list signups)
  • Git-tip and other microtipping?
  • See other projects in this file

cultivate equanimity

So that I can live an awesome life

enrich our experiences

So that I can live an awesome life

tickle my brain

develop my analysis skills

So that I can tickle my brain

share useful stuff

improve my sharing skills

So that I can share useful stuff

improve my drawing skills

So that I can share useful stuff

improve my coding skills

So that I can share useful stuff

publish resources

So that I can share useful stuff

build good karma

So that I can learn from people

Is this a true goal, or it mainly on the way to something else? Are there projects that support this instead of the other stuff?

cook yummy food

So that I can live an awesome life

practise types of recipes

So that I can cook yummy food

SOMEDAY make braising and other fancy cooking terms part of my vocabulary   Cooking

So that I can cook yummy food

SOMEDAY adjust the feel of things by using herb combinations   Cooking

So that I can cook yummy food

TODO develop a habit of cooking with lots of vegetables (CSA-like volume)   Cooking

So that I can cook yummy food

SOMEDAY create monthly cycles for favourite recipes   Cooking

So that I can cook yummy food

SOMEDAY cut standard sizes   Cooking

So that I can cook yummy food

learn from people

TODO learn Japanese

So that I can learn from people

  • TODO work through the Japanese language books we have at home   Learning

    So that I can learn Japanese

  • SOMEDAY Japanese: Listen to regular shows with >=80% comprehension   Learning

    So that I can learn Japanese

  • SOMEDAY Japanese: Listen to tech talks with >=80% comprehension   Learning

    So that I can learn Japanese

  • SOMEDAY Japanese: Listen to cooking shows with >=80% comprehension   Learning

    So that I can learn Japanese

  • SOMEDAY Japanese: Read blog posts and tweets about tech with >=80% comprehension   Learning

    So that I can learn Japanese

  • SOMEDAY Japanese: Read cooking instructions on packages with >=80% comprehension   Learning

    So that I can learn Japanese

  • TODO Japanese: Complete Anki decks for JP-2000   Learning

    So that I can learn Japanese

TODO host another 10 episodes of Emacs Chats or hangouts

So that I can learn from people and help the Emacs community grow

  1. Emacs Chat: technomancy
  2. Emacs Chat: Xah Lee
  3. Emacs Chat: Bozhidar Batsov
  4. Bodil Stokke?
  5. Steve Purcell? - Jan
  6. Stefan Monnier?
  7. John Kitchin?
  8. Reach out to the other bloggers on Planet Emacsen

SOMEDAY Set up an ongoing mentoring/coaching relationship with an Emacs coach

So that I can get more value from my time

https://www.codementor.io/sanityinc: RoR, jQuery, TDD, Emacs, Javascript https://www.codementor.io/skeeto http://emacs-doctor.com/

Possible concrete goals:

  • Follow best practices in setting up my web development environment (Rails, Javascript, NodeJS, Angular); learn how to think syntactically
  • Discover what else I should be doing with Org Mode
  • Set up a solid external data and backup plan
  • Learn more about what I don't know I don't know (Hard!)
  • Get into Emacs development

WAITING do right by our cats   Connecting

So that I can learn from people

WAITING complete the rest of the F projects   Connecting

So that I can learn from people

WAITING help p with t   Connecting

So that I can learn from people

WAITING do right by W- and J-   Connecting

So that I can learn from people

TODO develop a 4+-month habit of frequent messages to parents   Connecting

So that I can learn from people

SOMEDAY post notes and life changes from three months of working with a coach   Learning

So that I can learn from people

SOMEDAY have a regular plan for meeting friends at least one weekend every month   Connecting

So that I can learn from people

make better decisions

so that I can live an awesome life

WAITING sell stocks in a non-registered account and properly account for them   Finance

So that I can make better decisions

TODO re-examine spending and carve out more for what matters   Finance

So that I can make better decisions

WAITING weather a bear market with lots of investments   Finance

So that I can make better decisions

WAITING move to target allocation   Finance

So that I can make better decisions

WAITING reach 2% goal   Finance

So that I can make better decisions

WAITING reach 2.5% goal   Finance

So that I can reach 2% goal

WAITING deal with a famine year without panicking   Business

So that I can make better decisions

WAITING resolve estate amicably or walk away from it   Connecting

In order to make better decisions

get more value from my time

so that I can live an awesome life

SOMEDAY develop structures for journaling   Writing

TODO create syntopicon/bibliography   Learning

WAITING keep a year of private journals (short entries)   Writing

delegate more effectively

SOMEDAY delegate 2,000 hours or $20,000 of meaningful, useful work   delegation project

So that I can delegate more effectively and build good karma

So far:

(let ((dollars 8229.45)
      (hours 486))
  (format "%d dollars - %d%%; %d hours - %d%%"
          dollars (* (/ dollars 20000.0) 100.0)
          hours (* (/ hours 2000.0) 100.0)))

The work should:

  • move me towards my primary goals
  • help assistants improve their skills and justify better rates in the marketplace

Need to compensate for 2,166 hours as of 2014-05-16

SOMEDAY add 50 items to my process library   delegation

So that I can delegate more effectively and share useful stuff

Process library - for my virtual assistants and for other people who are interested in delegation

35 items - 70%
1. How to add blogs to Feedly
2. How to add resources to the resources page and sidebar widget
3. How to add tags to Flickr sketches
4. How to animate sketches with Autodesk Sketchbook Pro and Camtasia Studio
5. How to convert a Vimeo or YouTube video to MP3 and save it for offline listening
6. How to create a Frugal FIRE event on Google+
7. How to create a Google+ Event banner
8. How to create a Helpers Help Out event on Google+
9. How to download invoices from InvoiceTrack
10. How to draft Q&A posts based on a transcript
11. How to draft an Emacs Basics blog post
12. How to draw and implement highlighted hand-drawn icons using CSS sprites
13. How to extract the MP3 from YouTube or an MP4
14. How to file a healthcare claim for massage
15. How to identify Q&A from a transcript
16. How to import my theme into your local development environment and get ready for work
17. How to look up additional information for people
18. How to post show notes
19. How to prepare for and host a Google Hangout on Air
20. How to process audio in Audacity
21. How to process scheduling requests
22. How to request books from the library
23. How to research related posts
24. How to set up a public conversation over Google Hangouts On Air
25. How to set up a public conversation
26. How to set up a redirection URL
27. How to summarize blog posts as tweets
28. How to transcribe audio
29. How to update Flickr with blog post URLs
30. How to update QuantifiedSelf.ca blog posts with video embeds
31. How to update a blog post with an MP3
32. How to update a book through CreateSpace
33. How to update the MP3 metadata
34. How to upload an MP3 to archive.org
35. How to write a blog post

help the Emacs community grow

SOMEDAY Develop emacslife.com into beginner/enthusiast resources for Emacs   emacs project

so that I can help the Emacs community grow

What do I want to learn from working on EmacsLife?

  • Organizing questions logically, and adding links between sections
  • Writing based on an outline
  • Revising with feedback
  • Developing a smooth workflow for exporting my blog posts
    • Update monthly, perhaps?
  • Herding cats: Delegating to other geeks
  • Eventually: structuring courses, creating resources

Sketching the future:

Because of the time I've invested in working on resources for the Emacs community, I have the confidence that I can logically structure my thoughts and write technical learning-oriented books. I have a community of people happy to proof-read/beta. I have a lot of experience in creating rich media resources as well.

I have a smooth workflow for identifying topics, outlining them, organizing the topics, researching information, filling in the gaps (whether I'm writing things myself or paying other people to do so), pulling everything together, and publishing and sharing the results. This may even be self-financing. I create a useful resource of at least 10,000 words at least every 12 weeks.

This gives me great ways to:

  • Learn more about what I'm curious about
  • Organize my thoughts and identify gaps
  • Communicate clearly, approachably, and engagingly
  • Share in scalable ways

SOMEDAY create a 10-week Emacs Basics course   emacs specific project someday

So that I can help the Emacs community grow

http://sachachua.com/blog/tag/emacs-basics

  1. Use the mouse
  2. Call commands by name with M-x
  3. Customize and configure
  4. Learn keyboard shortcuts
  5. Learn Emacs Lisp
  6. Customize keyboard shortcuts
  7. Save time with keyboard macros
  8. Be inspired

TODO set up regular Emacs hangouts

so that I can help the Emacs community grow

Every two weeks? Every month? Need a co-host.

SOMEDAY draw 10 visual guides for learning Emacs

So that I can help the Emacs community grow

  • Beginner's guide
  • Keyboard shortcuts
  • Org mode
  • Dired
  • Managing your tasks

Old graph

goals.png

Code

(let ((count 0)
      (files
       (directory-files directory nil pattern)))
  (format "%d items - %d%%\n%s"
          (length files)
          (/ (* 100.0 (length files)) target)
          (mapconcat
           (lambda (x)
             (setq count (1+ count))
             (format "%d. %s" count (replace-regexp-in-string strip "" x)))
           files
           "\n")))
(defvar include-someday nil)
(defun sacha/fill-string (string new-fill-column &optional replace-char)
  "Wrap STRING to NEW-FILL-COLUMN. Change newlines to REPLACE-CHAR."
  (with-temp-buffer
    (insert string)
    (let ((fill-column new-fill-column))
      (fill-region (point-min) (point-max))
      (if replace-char
          (progn
            (goto-char (point-min))
            (while (re-search-forward "\n" nil t)
              (replace-match replace-char t t))))
      (buffer-string))))

(defun sacha/org-map-goals (tag)
  "Return an alist, based on the TAG tree and \"so that I can\" link structure.
Structure: ((nodes . ((components) ...)) (edges . ((a . b) ...)))"
  (let (nodes edges)
   ;; Go through the entries
    (org-map-entries
     (lambda ()
       (let ((heading (org-heading-components)))
         (when (or (not (elt heading 2)) (member (elt heading 2) (if include-someday '("TODO" "WAITING" "SOMEDAY") '("TODO"))))
           (save-excursion
             (save-restriction
               ;; Ignore subtrees in the body
               (org-narrow-to-subtree)
               (save-excursion
                 (org-set-property "CUSTOM_ID" (replace-regexp-in-string "[^A-Za-z0-9]" "_" (elt heading 4))))
               (end-of-line)
               (narrow-to-region
                (point-min)
                (if (re-search-forward
                     (concat "[\r\n]\\(" org-outline-regexp "\\)") nil t)
                    (match-beginning 1)
                  (point-max)))
               (goto-char (point-min))
               (when (> (car heading) 1)
                 (setq nodes (cons heading nodes)))
               (when (re-search-forward "so that I can" nil t)
                 (while (re-search-forward org-bracket-link-regexp (line-end-position) t)
                   (setq edges (cons (cons (elt heading 4) (match-string-no-properties 1)) edges)))))))))
     tag)
    (list (cons 'nodes nodes) (cons 'edges edges))))

(defun sacha/elgraphviz-process-property-list (prop-list)
  "Convert PROP-LIST to an alphabetically sorted, comma-separated attribute list."
  (mapconcat 'identity
             (delq nil
                   (mapcar (lambda (x)
                             (if (plist-get prop-list (car x))
                                 (format "%s=\"%s\"" (cdr x)
                                         (sacha/elgraphviz-quote-string (plist-get prop-list (car x))))))
                           sacha/elgraphviz-attributes))
             ","))

(ert-deftest sacha/elgraphviz-process-property-list ()
  (should (string= (sacha/elgraphviz-process-property-list '(:width 1)) "width=\"1\"")))

(defun sacha/elgraphviz-quote-string (string) "Quote \" in strings." (replace-regexp-in-string "\"" "\\\"" (format "%s" string)))

(defun sacha/elgraphviz-node (name &rest args)
  "Return the node definition for NAME with ARGS as attributes."
  (if args
      (format "\"%s\" [%s]" (sacha/elgraphviz-quote-string name) (sacha/elgraphviz-process-property-list args))
    (format "\"%s\"" (sacha/elgraphviz-quote-string name))))
(defun sacha/elgraphviz-directed-edge (a b &rest args)
  "Return the node definition for NAME with ARGS as attributes."
  (format "\"%s\" -> \"%s\" [%s]"
          (sacha/elgraphviz-quote-string a)
          (sacha/elgraphviz-quote-string b)
          (sacha/elgraphviz-process-property-list args)))

(ert-deftest sacha/elgraphviz-node ()
  (should (string= (sacha/elgraphviz-node "Test" :style "filled" :url "http://example.com" :tooltip "test")
             "\"Test\" [style=\"filled\",tooltip=\"test\",URL=\"http://example.com\"]")))

(defun sacha/elgraphviz-default-node (&rest attributes)
  (format "node [%s]" (sacha/elgraphviz-process-property-list attributes)))

(ert-deftest sacha/elgraphviz-default-node ()
  (should (string= (sacha/elgraphviz-default-node :color "#cccccc" :width 100)
           "node [color=\"#cccccc\",width=\"100\"]")))

(defun sacha/elgraphviz-default-edge (&rest attributes)
  (format "edge [%s]" (sacha/elgraphviz-process-property-list attributes)))
(defun sacha/elgraphviz-attribute (name val)
  (format "%s=\"%s\"" name (sacha/elgraphviz-quote-string val)))

(defun sacha/elgraphviz-digraph (id &rest body)
  (concat "digraph " id " {\n"
          (mapconcat 'identity body "\n")
          "}"))

(defun sacha/org-map-to-graphviz (map fill-column id)
  "Convert MAP to a graphviz representation. Wrap titles at FILL-COLUMN."
  (sacha/elgraphviz-digraph id
   (sacha/elgraphviz-attribute "id" id)
   (sacha/elgraphviz-default-node :shape "box" :fontname "Open Sans" :pad 1)
   (sacha/elgraphviz-default-edge :color "#CCCCCC")
   (mapconcat
    (lambda (x)
      (sacha/elgraphviz-directed-edge
       (sacha/fill-string (car x) fill-column "\\n")
       (sacha/fill-string (cdr x) fill-column "\\n")))
    (cdr (assoc 'edges map)) "\n")
   (mapconcat
    (lambda (x)
      (sacha/elgraphviz-node
       (sacha/fill-string (elt x 4) fill-column "\\n")
       :style (if (null (elt x 2)) "filled")
       :url (concat "#" (replace-regexp-in-string "[^A-Za-z0-9]" "_" (elt x 4)))
       :tooltip (elt x 4)))
    (cdr (assoc 'nodes map)) "\n")))
(org-babel-execute:dot (sacha/org-map-to-graphviz (sacha/org-map-goals tag) fill-column (plist-get :id params)) params)
Back to top
Back to top | E-mail me