Weekly review: Week ending August 21, 2015

Hardly any writing or drawing this week (beyond my now-usual daily notes). I still feel good about the week, though. I got lots of things done despite extra bleahness. W- has been helping me work on that part. =)

More consulting this week, since my clients asked me to help train a promising intern. I think he would be a great successor. Mwahaha.

2015-08-27b Week ending 2015-08-21 -- index card #journal #weekly output

Blog posts


Focus areas and time review

  • Business (20.3h – 12%)
    • Earn (15.5h – 76% of Business)
      • Earn: E1: 1-2 days of consulting
    • Build (2.2h – 10% of Business)
      • Drawing (2.2h)
      • Paperwork (0.0h)
    • Connect (2.6h – 12% of Business)
  • Relationships (11.5h – 6%)
  • Discretionary – Productive (9.0h – 5%)
    • Emacs (0.0h – 0% of all)
    • Plan tile floor
    • Writing (0.5h)
  • Discretionary – Play (32.7h – 19%)
  • Personal routines (23.8h – 14%)
  • Unpaid work (5.5h – 3%)
  • Sleep (65.3h – 38% – average of 9.3 per day)

Weekly review: Week ending August 14, 2015

My birthday was last week. I had fun reviewing the past year. So much has happened, and I’ve learned a lot: new skills, deeper interests, and so on. Yay!

I’ve been dealing with a lot of bleahs. W- has taken over cooking and has been wonderfully supportive. With any luck, I should be out of this phase soon.

Still have a hard time with focused thinking, but fortunately, the programming I do for my consulting clients isn’t blocked like that. When I find it difficult to write, I fill my mind with reading instead. I’ve been going through a lot of nonfiction books and science fiction novels from the library, and I’ve started picking up Latin again.

I’ve been playing around with doodling a bit more. It’s fun sketching a few random curves and seeing where my imagination goes, or gradually shaping a drawing into something that resonates with me.

W- and I finished True Vault Hunter Mode (TVHM) in Borderlands 2, hooray! Now we’re going through side missions and occasionally farming loot. I often join him for a few hours of gaming in the evening. Good for in-jokes and shared experiences.

Next week: small steps…

2015-08-19a Week ending 2015-08-14 -- index card #journal #weekly


Blog posts


Link round-up

  • Business (9.9h – 5%)
    • Earn (4.4h – 44% of Business)
      • Earn: E1: 1-2 days of consulting
    • Build (5.5h – 55% of Business)
      • Drawing (5.5h)
      • Paperwork (0.0h)
    • Connect (0.0h – 0% of Business)
  • Relationships (9.0h – 5%)
  • Discretionary – Productive (8.6h – 5%)
    • Emacs (1.7h – 0% of all)
    • Writing (2.1h)
  • Discretionary – Play (42.6h – 25%)
  • Personal routines (28.7h – 17%)
  • Unpaid work (1.0h – 0%)
  • Sleep (68.1h – 40% – average of 9.7 per day)

August 2015 Emacs Hangout

Thanks to Philip Stark for hosting this one!

Text chat:

Paul Harper 2:08 PM Evan’s Links: http://www.misshula.org/category/tutorials.html Dart Throwing Chimp: https://dartthrowingchimp.wordpress.com/
Philip Stark 2:15 PM https://www.vagrantup.com/ http://stevelosh.com/blog/2012/10/the-homely-mutt/
Paul Harper 2:19 PM mu4e: http://www.macs.hw.ac.uk/~rs46/posts/2014-01-13-mu4e-email-client.html Zawinski’s Law “Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can.” Law of Software Envelopment, Jamie Zawinski. Mutt with Org-Mode: https://upsilon.cc/~zack/blog/posts/2010/02/integrating_Mutt_with_Org-mode/
me 2:23 PM Maybe http://emacswiki.org/emacs/MultipleSMTPAccounts ?
Magnus Henoch 2:24 PM I mashed some of those together into this monster: link (github.com)
Mond Beton 2:25 PM org mode is new
Rogelio Zarate 2:26 PM Just started with emacs
Paul Harper 2:27 PM Emacs and Vim started in 1976 link (slate.com)
me 2:28 PM Was it this Err, link (sachachua.com)
http://endlessparentheses.com/ ?
Paul Harper 2:41 PM Not sure if this might help. Setting up Emacs key mappings on Windows Outlook link (blogs.adobe.com)
me 2:42 PM http://emacsblog.org/2007/05/10/emacs-key-bindings-in-windows/ suggests XKeymacs, but I don’t know if it will work with recent versions of Windows. http://www.cam.hi-ho.ne.jp/oishi/indexen.html
Mond Beton 2:44 PM thank you
Rogelio Zarate 2:48 PM Too many opinions on how to do things, example keybing on emacs/os x
me 2:50 PM link (emacs.stackexchange.com) may be helpful if you want it to reuse an existing Emacs if possible
Daniel Gopar 2:58 PM https://github.com/gopar/.emacs.d/blob/master/init.el#L442
Paul Harper 2:59 PM Something for beginners like me. A course in research tools which includes some clear videos on using Emacs. Kurt Schwehr put the course on YouTube (linked in note) and the course is in org mode. The Course itself is GIS focused. You can download the whole thing with Mercurial. Instructions on the page. I found it very helpful when I started. http://vislab-ccom.unh.edu/~schwehr/rt/
Philip Stark 3:02 PM What’s GIS?
me 3:03 PM Phil: Hmm, something like http://emacs.stackexchange.com/questions/608/evil-map-keybindings-the-vim-way using tags?
Philip Stark 3:05 PM https://www.gnu.org/software/global/
Philip Stark 3:07 PM http://elpa.gnu.org/packages/ggtags.html
Daniel Gopar 3:09 PM so im learning elisp. Does elisp have any ways of creating private/public variables? or is everything exposed once you run the require command on the file?
Philip Stark 3:09 PM https://github.com/skeeto/skewer-mode
Rogelio Zarate 3:14 PM How do you handle projects, like in Sublime, do you use Projectile or Perspective?
Philip Stark 3:14 PM http://exercism.io/
me 3:16 PM https://github.com/losingkeys/4clojure.el and http://endlessparentheses.com/be-a-4clojure-hero-with-emacs.html
Philip Stark 3:18 PM https://www.bestpractical.com/rt/
Rogelio Zarate 3:19 PM Keeping just one list sounds like the correct approach. Great tip.
me 3:19 PM link (saintaardvarkthecarpeted.com)
Paul Harper 3:21 PM Notmuch https://www.youtube.com/watch?v=PK5rOT6k8rw
me 3:29 PM Want to get notified about upcoming hangouts? You can sign up for notifications at http://eepurl.com/bbi-Ir

Life as a 31-year-old

I used to host get-togethers as a way of thanking friends, catching up with folks, and seeing what interesting conversations come out of mixing people together. I was always stressed out right up to when people started arriving and mingling, though. It turns out that it’s totally all right to celebrate one’s birthday however you want. For W- and me, quiet days at home win out over noisy celebrations. =) Besides, I’m still in hermit mode these days.

I like looking back at the past year. I’m always surprised by the things that managed to fit in a single year. Was that memory really that recent? Has it really been that long since that other memory? Here are a few of those highlights for me:

2015-08-11b Life as a 31-year-old -- index card #review #yearly

  • Business
    • Helping my client through a major upgrade
    • Enjoying an intense and wonderful sprint of prototyping for a high-profile event
    • Having fun at an internal hackathon
    • Improving my skills: Javascript, SQL (SQL Server and PostgreSQL), Tableau
    • Filing quick method HST on my own
    • Managing my own health plan
  • Connecting
    • Hacklab’s move from Kensington Market to Queen Street West – kitting out the kitchen so that it’s a pleasure to cook in, and spending hours cooking at open houses
    • Spending more time at Hacklab
    • Talking about talking
    • Becoming closer to friends and talking about deeper topics
    • Figuring out the space I need, too
  • Hobbies and interests
    • Picking up sewing again
    • Combining sewing with laser cutting, whee: post
    • Reading lots of science fiction
    • Reflecting on philosophy, leisure, applying Stoicism, and so on
    • Digging into coding and visualizations, especially for my future self
    • Helping the Emacs community through hangouts and posts
  • Family and life
    • Working on projects around the house and other things
    • Reaching personal milestones (10 years in Canada, among other things)
    • Becoming a Canadian citizen (no longer worrying about getting stuck on the wrong side of a border!)
    • Making my peace with fuzzy brain and other things

There’s been a lot of wrapping things up this year, closing long-running open loops. It feels good to reap the benefits of things planned and started by long-ago selves. I wonder what I can prepare for my future self. I think philosophy and reading will be handy, and maybe the skills and tools I build. Who knows, maybe sewing will be useful too. We’ll see!

Last year, I wrote that when I do my “Life as a 31-year-old” review, I’d like to be able to say that:

  • I have excellent health-related habits: I enjoyed the biking while it lasted. For now, this is temporarily limited to walking. Oh well!
  • Our home life is wonderful: So much for yummy food, but yay for projects, decluttering, simple lives, great relationships, and so on.
  • I helped my consulting client make successful transitions: Yup!
  • I’ve broadened my business a little bit more. I’ve made it smaller, actually, but I’m happy with the outcome and with my reasons for doing so.

Here are some other differences:

  • Compared to 30-year-old me, I’ve been both a lot more social (November to April or so) and a lot less social (these past few months). Hermit mode is surprisingly comfortable.
  • I’ve dialed consulting back to one day a week, although I’ve also worked more intensely when needed. My current life is very relaxed and laid-back.
  • Enough of a stock market downturn to make it onto my radar. Still not panicking, though, which is a good sign. Seems to be recovering. I’m in it for the long haul, anyway.
  • I really like this practice of drawing digital index cards to record my day and build up thoughts. They’re more granular and manageable than the 8.5×11″ sheets I used to draw.
  • I used to draw with more colours. I’ve been mostly black-and-white these days, but I think I’ll get back to colours when I start feeling more playful about thinking.
  • I learned how to play first-person shooter games. They’re actually quite fun. W- and I have been playing Borderlands 2.
  • I’m more comfortable with fuzziness and uncertainty and experimentation (yay philosophy), which could be good for growing older and taking on more challenges. Life so far is already enough, and anything more than this is a bonus. I wonder: what’s beyond getting things done?
  • I’ve gotten to the point of being able to wear something I made every day, if I want to. I don’t always do so, but I like having the option. It was surprisingly easy and a good opportunity to geek out more. =)

A snapshot of everyday life, so that I can remember what it was like at this time:

I’m home most of the time, although sometimes I go for a walk to the supermarket or the library. It’s a little frustrating feeling fuzzy or bleah, but at the same time, it’s good philosophy practice. It’s hard to write, but if I keep collecting fragments of thoughts, I know they’ll add up. Voluntary discomfort, momentary annoyances, and all that. With any luck, I’ll probably shift out of hermit mode sometime over the next few weeks. In the meantime, W- and I play Borderlands 2 in the evening. It’s fun coordinating our attacks and swapping loot.

The blueberries and the strawberries in our garden have been extra-yummy this summer. Yay! The drip irrigation system that W- and I put in has been paying off, too. The garden’s a lot more lively now than it was last year.

I have no idea what next year will be like, but I look forward to handling it with equanimity.

If you’re curious, here are some other yearly reviews I’ve written (both birthday-related and calendar-related). It’s fun having an archive. =)

Weekly review: Week ending August 7, 2015

This week was a very bleah week, but I pulled through with help from W-. On the plus side, I got a bit of writing done. Still very bleah, though. Lots of sleep.

2015-08-11a Week ending 2015-08-07 -- index card #journal #weekly output

Blog posts


Focus areas and time review

  • Business (11.8h – 7%)
    • Earn (8.7h – 73% of Business)
      • Earn: E1: 1-2 days of consulting
      • Prepare invoice
    • Build (2.7h – 22% of Business)
      • Drawing (2.7h)
      • Paperwork (0.0h)
    • Connect (0.4h – 3% of Business)
  • Relationships (12.7h – 7%)
  • Discretionary – Productive (12.8h – 7%)
    • Emacs (0.0h – 0% of all)
    • Writing (7.8h)
  • Discretionary – Play (36.9h – 21%)
  • Personal routines (19.7h – 11%)
  • Unpaid work (6.4h – 3%)
  • Sleep (67.6h – 40% – average of 9.7 per day)

Org Mode date arithmetic

Whenever I need to get Emacs to prompt me for a date or time (even for non-Org things), I use org-read-date. I love its flexibility. It’s great to be able to say things like +3 for three days from now, fri for next Friday, +2tue for two Tuesdays from now, +1w for next week, and +1m for next month. It’s easy to use org-read-date in Emacs Lisp. Calling it with (org-read-date) (usually as an interactive argument, like so: (interactive (list (org-read-date)))) gives me a date like 2015-08-06 depending on what I type in.

I use org-read-date for non-interactive date calculations, too. For example, if I want to quickly get the Org-style date for tomorrow, I can use org-read-date‘s third parameter (from-string) like this:

(org-read-date nil nil "+1")

Here’s how to calculate relative dates based on a specified date. You can hard-code the base date or use another org-read-date to get it. In this example, I’m getting the Monday after 2015-08-31. Note the use of two + signs instead of just one.

(org-read-date nil nil "++mon" nil (org-time-string-to-time "2015-08-31"))

org-time-string-to-time converts a date or time string into the internal representation for time. You can then extract individual components (ex: month) with decode-time, or convert it to the number of seconds since the epoch with time-to-seconds. Alternatively, you can convert Org time strings directly to seconds with org-time-to-seconds.

If you’re working with days, you can convert time strings with org-time-string-to-absolute. For example, you can use this to calculate the number of days between two dates (including the first day but excluding the last day), like this:

(let ((start-date (org-read-date))
      (end-date (org-read-date)))
  (- (org-time-string-to-absolute end-date)
     (org-time-string-to-absolute start-date)))

To get the month, day, and year, you can use org-time-string-to-time and decode-time, or you can use org-time-string-to-seconds and calendar-gregorian-from-absolute.

To convert internal time representations into Org-style dates, I tend to use (format-time-string "%Y-%m-%d" ...). encode-time is useful for converting something to the internal time representation. If you’re working with absolute days, you can convert them to Gregorian, and then format the string.

So, to loop over all the days between the start and end date, you could use a pattern like this:

(let* ((start-date (org-read-date))
       (end-date (org-read-date))
       (current (org-time-string-to-absolute start-date))
       (end (org-time-string-to-absolute end-date))
  (while (< current end)
    (setq gregorian-date (calendar-gregorian-from-absolute current))
    (setq formatted-date
          (format "%04d-%02d-%02d"
                  (elt gregorian-date 2) ; month
                  (elt gregorian-date 0) ; day
                  (elt gregorian-date 1))) ; year
    ;; Do something here; ex:
    (message "%s" formatted-date)
    ;; Move to the next date
    (setq current (1+ current))))

Alternatively, you could use org-read-date with a default date, like this:

(let* ((start-date (org-read-date))
       (end-date (org-read-date))
       (current start-date))
  (while (string< current end-date)
    ;; Do something here; ex:
    (message "%s" current)
    ;; Move to the next date
    (setq current (org-read-date nil nil "++1" nil (org-time-string-to-time current)))))

There are probably more elegant ways to write this code, so if you can think of improvements, please feel free to share.

Anyway, hope that helps!