Evil plans
Curious about anything? Contact me at sacha@sachachua.com . Web: http://sachachua.com/evil-plans Raw file: evil-plans.org
Additional notes: http://sachachua.com/blog/2014/03/reflecting-goals-time/
Plan graph
See raw file or end of document for code.
How do I want to represent specific goals?
Goals goal
live a good life
TODO do a 5-year experiment in self-directed living
So that I can live a good 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)
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
tickle my brain
so that I can get more value from my time and share useful stuff
TODO learn image processing with the Raspberry Pi
so that I can tickle my brain
Using simplecv
- ☑ Load the images
- ☑ Calculate the absolute difference
- ☑ Identify the largest blob (minimum size of X)
- ☑ Draw the path followed by the centroid of the blob
- ☐ Figure out a better visualization for litter box monitoring
DONE learn Morse code for all the letters; receive at 5 WPM; transmit as slowly as needed
So that I can tickle my brain
- Tried Morse Code Trainer on my phone. =) Learning my .- -… -.-. -..!
TODO memorize Latin declensions
So that I can tickle my brain
Testing: http://www.latintests.net/grammar/nouns.php - 5 days in a row, first test 100%
- One mistake (first declension), second declension still giving me prblems
- 100% first declension
TODO make ABCs of Emacs
So that I can tickle my brain and share useful stuff
- apropos
- browse-kill-ring
- customize / compile / calc
- dired, debug-on-entry
- edebug-defun, eshell
- fastnav, ffap, fixup-whitespace
- grep-find, gnus
- help-with-help, helm
- ielm
- just-one-space
- keyboard macros, kmacro-start-macro, kbd-macro-query
- load-library, locate-library, list-packages
- magit, make-indirect-buffer
- name-last-kbd-macro
- occur (and occur-edit-mode); org
- package-list-packages, picture-mode
- quick-url, query-replace-regexp-eval
- regexp-builder, recursive-edit, recover-this-file,
- savehist-mode, server-start, smartparens
- tags-search, term, thumbs, tmm-menubar, type-break
- undo-tree-visualize
- vc-next-action, view-lossage, visual-line-mode
- where-is, winner-mode, windmove, window-configuration-to-register
- M-x (execute-extended-command)
- yank-pop
- zap-to-char
DONE Draw the goal graph based on my Org entries emacs
So that I can tickle my brain and make better decisions
build good karma
So that I can learn from people and have a solid foundation
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?
learn from people
So that I can tickle my brain and share useful stuff
TODO complete project F
So that I can learn from people and have a solid foundation
TODO host at least four episodes for the Frugal FIRE show
So that I can learn from people and share useful stuff
TODO host 10 episodes of Emacs Chats
http://sachachua.com/blog/emacs-chat/
So that I can learn from people and help the Emacs community grow
- ☑ Emacs Chat: Magnar Sveen (Emacs Rocks)
- ☑ Emacs Chat: Sacha Chua (with Bastien Guerry)
- ☑ Emacs Chat: Bastien Guerry
- ☑ Emacs Chat: Carsten Dominik
- ☑ Emacs Chat: Thomas Kjeldahl Nilsson
- ☑ Emacs Chat: Avdi Grimm (Org-mode, Ruby, etc.)
- ☑ Emacs Chat: John Wiegley
- ☑ Emacs Chat: Iannis Zannos
- ☐ Emacs Chat: Tom Marble
- ☐ Emacs Chat: Xah Lee? - asked
- ☐ Emacs Chat: Bozhidar Batsov
- Reach out to the other bloggers on Planet Emacsen
make better decisions
So that I can live a good life
TODO track and reflect on 25 non-trivial decisions/assumptions
So that I can make better decisions As listed in http://sachachua.com/blog/category/decision
What do I want to tweak about how I make decisions?
get more value from my time
so that I can live a good life
TODO write 10 blog posts with Dragon NaturallySpeaking
so that I can get more value from my time
- Dictate blog posts
- Make posts sound more natural
- Get ideas out faster
- Rest my hands
- Dictate book notes
- Rest my hands
- Read more ergonomically
SOMEDAY write AutoHotkey script that has file actions
So that I can get more value from my time
SOMEDAY read the iMacros API
So that I can get more value from my time
SOMEDAY learn Plover steno
so that I can get more value from my time
SOMEDAY set up Selenium for automating web actions
So that I can get more value from my time
delegate more effectively
So that I can get more value from my time
TODO delegate 2,000 hours of meaningful, useful work delegation
So that I can delegate more effectively and build good karma
So far:
(let ((hours 379)) (format "%d hours - %d%%" 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
TODO 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
34 items - 68% 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 create a Frugal FIRE event on Google+ 6. How to create a Google+ Event banner 7. How to create a Helpers Help Out event on Google+ 8. How to download invoices from InvoiceTrack 9. How to draft Q&A posts based on a transcript 10. How to draft an Emacs Basics blog post 11. How to draw and implement highlighted hand-drawn icons using CSS sprites 12. How to extract the MP3 from YouTube or an MP4 13. How to file a healthcare claim for massage 14. How to identify Q&A from a transcript 15. How to import my theme into your local development environment and get ready for work 16. How to look up additional information for people 17. How to post show notes 18. How to prepare for and host a Google Hangout on Air 19. How to process audio in Audacity 20. How to process scheduling requests 21. How to request books from the library 22. How to research related posts 23. How to set up a public conversation over Google Hangouts On Air 24. How to set up a public conversation 25. How to set up a redirection URL 26. How to summarize blog posts as tweets 27. How to transcribe audio 28. How to update Flickr with blog post URLs 29. How to update QuantifiedSelf.ca blog posts with video embeds 30. How to update a blog post with an MP3 31. How to update a book through CreateSpace 32. How to update the MP3 metadata 33. How to upload an MP3 to archive.org 34. How to write a blog post
have a solid foundation
So that I can live a good life
- Finances: Save more, experiment with other sources of income
- Business: Build solid web development skills (or other things that are good for contracting)
- Relationships: Awesome relationship with W-
- Life: Have space and time. Sleep well. Work from a position of abundance.
help the Emacs community grow
so that I can tickle my brain and share useful stuff
TODO create a 10-week Emacs Basics course emacs specific
So that I can help the Emacs community grow
http://sachachua.com/blog/tag/emacs-basics
- ☑ Use the mouse
- ☑ Call commands by name with M-x
- ☑ Customize and configure
- ☐ Learn keyboard shortcuts
- ☐ Learn Emacs Lisp
- ☐ Customize keyboard shortcuts
- ☐ Save time with keyboard macros
- ☐ Be inspired
SOMEDAY 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
improve my blog
So that I can share useful stuff
SOMEDAY split off topic-focused views
So that I can improve my blog
SOMEDAY review 31 blogs
So that I can improve my blog
4 items - 12% 1. Engagement, sticky shares - markevans.ca 2. Fat footer, lots of structure - extension.org 3. Lots of comments - rootofgood.com 4. Sticky sidebar get started - mywifequitherjob.com
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")))
(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))) (unless (member (elt heading 2) '("DONE" "SOMEDAY")) (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/org-map-to-graphviz (map fill-column) "Convert MAP to a graphviz representation. Wrap titles at FILL-COLUMN." (concat "digraph G {\n" "node [shape=box,fontname=\"Open Sans\",pad=1]\n" "edge [color=\"#CCCCCC\"]\n" (mapconcat (lambda (x) (format "\"%s\" -> \"%s\"" (sacha/fill-string (car x) fill-column "\\n") (sacha/fill-string (cdr x) fill-column "\\n"))) (cdr (assoc 'edges map)) "\n") "\n" (mapconcat (lambda (x) (format (if (null (elt x 2)) (concat "\"%s\" [style=filled, URL=\"#%s\", tooltip=\"%s\"]") "\"%s\" [URL=\"#%s\", tooltip=\"%s\"]") (sacha/fill-string (elt x 4) fill-column "\\n") (replace-regexp-in-string "[^A-Za-z0-9]" "_" (elt x 4)) (elt x 4))) (cdr (assoc 'nodes map)) "\n") "}\n")) (org-babel-execute:dot (sacha/org-map-to-graphviz (sacha/org-map-goals tag) fill-column) params)