January 2015

Learning a little more quickly

January 1, 2015 - Categories: learning

Sometimes I feel like I learn more slowly than I used to. Maybe my brain is a little fuzzier than before. That’s what it tries to tell me as an excuse, but I soundly reject that, because too much belief in that can lead to accepting more excuses. It’s more likely I’m spending time slogging through the plateau of mediocrity instead of playing on the slopes of awesomeness, and my brain is unfairly comparing the experiences of the two. Being aware of it means I can accept it as normal and deal with it.

I suspect this is happening because a quick antidote for the “Grr, my brain is so fuzzy” feeling is to hang out in help channels and answer people’s questions, or work on client projects and help them with their requests. Then I usually feel like I learn pretty quickly, especially when speed-reading and knowing what to search for and being able to combine different things means delighting people with how rapidly we can get stuff done. It’s ego-gratifying, but I shouldn’t do it all the time. It’s better for me to sit with my occasional frustration and get better at learning things on my own.

So it’s not that my brain is being particularly bleah, but that it wants to snack on small questions and quick wins instead of eating its vegetables.

This is where I stretch the metaphor and start thinking of ways to swap out some of the less-favoured vegetables for ones that are more palatable but just as nutritious, maaaybe letting it pick out a few things it doesn’t like and offering it options so that it thinks it’s choosing. Or something like that.

wpid-2014-11-12-What-are-the-things-I-want-to-learn-more-quickly-and-what-would-that-look-like.png

Hmm. That is an interesting metaphor, actually. It’s like I know there’s value in chewing your vegetables and all sorts of other good stuff, but I just want to start with dessert, or if I have to eat the rest of the stuff, maybe I can just pick the good parts and be off to the next thing. And I’m all, like, “I’ve already tried the green beans! Why do I have to eat them again?” (Actually, in real life, I get along fine with green beans. But you probably get the idea.)

So maybe the trick is to eat those vegetables and make “Mmmmmm!” noises until my brain gets the hang of it. Maybe even pretending that vegetables are coveted prizes. (“Good girl! Have a carrot / read an e-book.”)

Huh. Metaphors. Fun to play with. Surprisingly useful.

If you’ll excuse me, I’m off to read through a yummy Rails tutorial. Mmm. Fun. =)

2014 in review

January 2, 2015 - Categories: review, yearly

First, a list of posts I particularly want to remember from this year. If any of them sound interesting, feel free to check them out – I’d love to hear what you think.

Second, a snapshot of everyday life, so that I can remember what it was like at this time. My routines haven’t changed much since last year, except perhaps that I spend more time writing, cooking, and snuggling with W- and the cats. I try to drop by my consulting client on Thursdays, having successfully off-loaded most of my responsibilities to the team members I’ve trained. I go to Hacklab most Tuesdays to help cook a free vegan dinner for the open house; it’s enjoyable cooking practice, and sometimes I get interesting conversations out of it. W- has taken on a bigger role at work, but that still gives us plenty of time for family projects (we’re working on the basement at the moment). J- often has friends over to study and hang out, so we keep the house stocked with a variety of snacks.

Some memories from this year:

  • We took our cat Leia for a lion cut to deal with some of the mats in her fur. It was very amusing.
  • I started keeping a more deliberate private journal using Org Mode and Evernote. It’s a good complement to blog posts.
  • Mixed results in the garden, but we were pleasantly surprised by getting one zucchini, two bitter melons, and two winter melons out of it. We’ll keep trying.
  • I became a Canadian citizen! I’ve been remiss about actually applying for the passport, though. I’ll get that sorted out soon.

2014-12-25 2014 Review

Third, overall themes:

In 2013, I resolved to spend more time focusing on my own things instead of giving in to the pull of consulting. So in 2014, I collected more resources into e-books (and even one print book). I experimented with writing a four-part course. I took a Coursera class on analyzing data with R. I played around with Emacs and wrote blog posts for hours.

And yet my data tells me I actually spent more time working on other people’s projects. It went from 9% of my time in 2013 to 12% of my time in 2014, which works out to about six additional hours extra per week. This is coincidentally the same number of hours I reduced my socializing by, although a chunk of that can be explained by shifting socializing to Hacklab (which I track under Business – Connect).

The special project I did in September really changed the balance (27.5% of my time in that month!), as did the fact that I didn’t take any month-long breaks. Even hermit-mode November involved working from home 6% of the time (~10 hours a week).

It’s funny how perception doesn’t match data. Despite the extra time spent consulting, I felt a lot more self-directed this year – maybe because I produced more tangible stuff, and my tasks were more aligned with each other. But I’m drifting off course from becoming my own main client, and I want to adjust that heading in 2015.

Category 2014 % ~h/wk 2013 % ~h/wk change in h/wk
Business – Earn 12.4 21 9.1 15 6
Personal care 14.6 25 12.7 21 4
Discretionary – Productive 7.8 13 6.7 11 2
Sleep (~ 8.9h per day) 36.4 61 36.7 62 -1
Business – Connect 4.2 7 4.4 7 0
Business – Build 7.0 12 7.5 13 -1
Unpaid work (chores, etc.) 7.0 12 7.8 13 -1
Discretionary – Play 5.0 8 5.2 9 -1
Discretionary – Family 4.0 7 5.5 9 -2
Discretionary – Social 1.2 2 4.9 8 -6

Data collected using Quantified Awesome – compare 2014 and 2013

In terms of technical skills, I picked up more experience in:

  • Tableau: I learned how to take advantage of custom SQL and filter actions, and I became more comfortable with calculated fields, parameters, and filters.
  • Javascript: I got better at writing short Javascript functions and testing them. The new API for the social platform I work with on my consulting gig allowed me to build all sorts of nifty new tools. I’ve also been helping another developer pick up skills.
  • NodeJS and AngularJS: I built a prototype survey tool that also automated other things we wanted to do during a special event.
  • Rails 4: I finally upgraded quantifiedawesome.com to Rails 4.

Also, Emacs Chats and Emacs Hangouts have been awesomely fun and inspiring. Can’t wait to set up more of them!

In terms of writing, I got better at working with outlines as a way to organize my thoughts within each blog post. I’m still working on getting the hang of outlines to help me organize my thoughts across multiple blog-post-sized chunks, but the basic Emacs Lisp course was a good start. I also started building up an Emacs Org to EPUB/MOBI/PDF workflow for quick publishing and updating, so that I can can get more e-books up on Gumroad. Because I offer these resources on a free/pay-what-you-want basis, every time someone does buy it, I’m delighted to have that opportunity to connect.

My 2013 review included a number of themes:

  • Smooth consulting transitions: We’re on the way there, I think. I’ve been training one of the team members to cover the work I used to do, which is great.
  • More initiative-taking: Yes, especially in terms of professional development and publishing. I’m getting better at figuring out what I would like to learn and how to try things out.
  • Cardio and strength exercise habits: W- shared the Couch-to-5K program he picked up at work. We’d gotten all the way through it together (even though I covered much less distance than he did), but then I had to drop the habit because of other considerations. I’d also started the Exercise Ladder, but it got hit by the same restrictions. We’ll see how next year turns out! It’s good to know that I can do it and enjoy it, and I’m looking forward to starting even if I have to start from scratch.
  • Intentional interaction: I love spending time with W-. I’ve also been spending more time connecting with people in person at Hacklab open houses (at which folks are welcome to visit me, too, so it’s a great way to have low-commitment conversations). I feel great about my online conversations, too; there’s resonance there.On the flipside, I spent less time setting up get-togethers in person or treating people to lunch. I didn’t bother with a birthday party for the second year in a row; I realized I enjoy the peace and quiet.

    I’ve been pulling myself in, focusing on a small core. Still, compared to last year, this year’s interactions feel more natural and more relaxed for me. Perhaps I’m more selfish and withdrawn than the ideal, but I’ll grow at my own pace. I’m probably going to stay similarly reserved in 2015 to give myself space to explore things, but I’ll reconsider this in 2016.

  • Simple living: Wow, Epictetus, dude. You do make it easier to separate what’s important and what’s just nice to have. Aristotle has a lot to say about the good life, and Seneca has something to say about the short life. Good stuff.This year, I let go of quite a few anxieties, attachments, previously-unexamined commitments, and desires. I am getting a little attached to flexibility, though, so that’s something I may want to experiment with.
  • More harvesting and sharing: That worked out well. I’m excited about writing bigger chunks with outlines and using my publishing workflow to package even more useful resources. This will be fun.

It’s been a good year for the stock market, although all of that is still paper gains for me since I haven’t sold any stocks and all my dividends are reinvested. We had some pretty large expenses (in line with our priorities, at least) that required me to dip into my savings. I issued my first dividends last year, so if things work out the way I expect them to at tax-time, planning should be smoother.

Here’s a more detailed time breakdown of some things I care about:

Activity 2014 % 2013 % Change in hours/year
Emacs 1.8 1.1 61
Drawing 2.6 2.2 35
Writing 3.2 3.0 18

Hmm. I didn’t spend that much more time, but it feels a little awesomer this year; the posts grew into more conversations with people, and I learned more from those. Maybe it’s that test-driven learning thing. What you learn becomes more real to you and more useful to others when you create something from it, so it can make sense to aim for creating something from the beginning.

I’m getting a little clearer about what I want to do with my writing, drawing, and Emacs-tweaking:

  • Learn more stuff myself: Because this is fun and it tickles my brain
  • Delight and inspire people with the cool stuff out there. (Selfish reason: I get to learn, too!)
  • Connect with people: something about resonance and swapping notes and casting a little light on different roads…

Experiment update: 2015 will be the fourth year of my five-year experiment. Boggle! When I thought about what five years looked like in 2012, it felt like such a big space – more than university, more than the time I spent at IBM.

  • The first year, I learned how to experiment with business models, hitting the ground running with consulting.
  • The second year, I focused on consulting and event sketchnoting.
  • The third year (2014), I scaled down consulting so that I could learn more about creating.

2014 was the year that people’s generosity showed me that I really like writing as a way of creating value. There were countless conversations and even the occasional purchase of free/pay-what-you-want (PWYW) resources. I liked waking up in the morning to a notification that someone had decided to express their appreciation and invest in me (and themselves!). I liked the responses to my thank-you notes, the questions and suggestions and ideas. It was more of a gentle thrum rather than the highs and lows of programming, but I liked it.

If my life can continue to fit within investments and savings and little streams of income, I’d like to keep doing this. It’s not going to be an extravagant life, but there’s room for what’s important. So the fourth year, 2015, will be a good opportunity to explore sharing further. Can I keep this going through the extra uncertainty we might be dealing with next year? Can I create and receive value with this commitment to openness instead of following the trend toward exclusive courses and premium content? Can I build resources that will save or improve 10-100 hours of people’s lives so that they’re willing to give me the equivalent of a few of their hours to make this even better?

In 2015, I’m looking forward to:

  • Improving my technical skills:
    • Getting even more deeply into Emacs and taking advantage of the many useful packages that are available
    • Writing shorter, better-tested code in Javascript and Rails
  • Writing with even more resonance and helpfulness: digging deeper into the things I’m learning and sharing them with other people in ways that help and engage
  • Successfully taking on more uncertainty with even better safety nets and equanimity

It’ll be fun. =) Thanks for great year!

Previous reviews:

Review: Week ending January 2, 2015

January 4, 2015 - Categories: review, weekly

This week was about making little improvements. We installed weather-stripping to stop the drafts under the exterior walls. We added more lights to the basement, including an undercabinet light at my desk. I organized the tangle of USB cables plugged into a hub behind my monitor, tucking them into a box with a few input and output holes so that there’s less visual clutter. I also set up my Cintiq 12WX again. Using it to draw book sketchnotes is more pleasant than using my tablet PC. I wrote some Emacs Lisp to help me with my monthly reviews, and some Javascript to add blog links to more than a hundred of my sketches. I set up a Tasker scene to help me track my time on QuantifiedAwesome.com with just two clicks. Fun!

I posted my annual review. I think my focus for 2015 is going to be on little improvements and micro-habits. Getting really good at that will likely have all sorts of benefits.

Next week, W- will be back at work, and I’ll probably spend Thursday consulting. The rest of the time, I’m looking forward to revising transcripts, sketching books, and planning my next series of 2-4 week experiments.

Blog posts

Sketches

Link round-up

Focus areas and time review

  • Business (12.6h – 7%)
    • Earn (2.4h – 19% of Business)
      • Earn: E1: 1-2 days of consulting
    • Build (4.8h – 38% of Business)
      • Drawing (2.9h)
        • Sketchnote So Good They Can’t Ignore You
        • Sketchnote The Checklist Manifesto
      • Delegation (0.0h)
      • Packaging (0.0h)
      • Paperwork (0.0h)
        • File payroll return
      • Fix forgot password process
    • Connect (5.4h – 42% of Business)
  • Relationships (39.5h – 23%)
  • Discretionary – Productive (11.6h – 6%)
    • Emacs (2.1h – 1% of all)
      • Revise transcript for Magnar Sveen
      • Revise transcript for Thomas Kjeldahl Nilsson
      • Reach out to possible Emacs Chat people
    • Get Org Mode to talk to my Vagrant VM
    • Make something that updates my Flickr photo descriptions in bulk
    • Write Emacs Lisp code for monthly review
    • Get passport pictures
    • Apply for passport
    • Pick up cultural access pass from Front and Parliament
    • Writing (7.9h)
  • Discretionary – Play (12.3h – 7%)
  • Personal routines (23.4h – 13%)
  • Unpaid work (8.8h – 5%)
  • Sleep (59.9h – 36% – average of 8.6 per day)

Morning, afternoon, evening, commute: thinking about what to do when (sketched)

January 5, 2015 - Categories: productivity

My days have regular rhythms, as yours probably do. In the morning, I’m usually fresh and energetic. The afternoons are sometimes a little slower, but they’re often solidly productive. In the evenings, my mind is a bit tired, but it’s a good time to catch up on chores.

2014-12-11 What is good for me to do when

I’m slowly learning about the quirks of my rhythms and choices. I’ve been thinking about what’s good to do when so that I can find better ways to use my time.

  • If I commute off-peak, I can sit down and write or play games. It’s easy to time this in the mornings. I often plan to avoid the evening rush, but I get stuck in it anyway. This is because I get distracted by cool things to work on or learn. Maybe I should set an alarm.
  • If I sit on the couch, one of the cats will usually settle onto my lap. This makes typing on a laptop inconvenient. But I enjoy spending time with the cats, so I don’t mind giving up a little productivity. It’s relaxing to focus on the cat instead of multitasking, and sometimes ideas float into my head. When I want to work on something, my phone can be more convenient than my laptop.
  • If I do a coding sprint close to midnight–say, from 9:30 PM to 11:30 PM–I have a harder time falling asleep, even if I’m no longer thinking about code. If I spend the same time writing, even on my computer, I’m fine.

Geeking out with W- is a good way to spend evenings. Brush up tech skills, spend time together, make the house a little smarter.

I hadn’t realized how similar cat-couch-time is to commuting time. I should be sure to keep my phone handy. Differences: drawing on my tablet PC is something that makes decent use of cat-couch-time that I wouldn’t do while commuting, and I can listen to podcasts while commuting but I’d rather listen to purring when with the cats.

Hmm. This gives me a way to practise using my time better during each phase of my day. I might print this and keep it handy, or bookmark it and refer to it often.

On a related note, what’s good for me to do on which days of the week? Hmm…

  • Saturday: Groceries, laundry, tidying, library, weekly review, meeting friends
  • Sunday: Cooking, meeting friends
  • Monday: Writing, coding
  • Tuesday: Consulting, because of team meeting; Hacklab open house
  • Wednesday: Packaging, drawing
  • Thursday: Consulting, because of team meeting
  • Friday: Accounting, paperwork, correspondence, transcripts, review, planning

What would your rhythm look like?

Monthly review: December 2014

January 6, 2015 - Categories: monthly, review

I wrote that in December, I planned to:

  • Continue helping my consulting client with prototyping and analytics: I updated our Tableau reports, and I’ve been turning over more prototyping to the new developer. Yay!
  • Dive into Emacs improvement: Didn’t get to do as much of this as I liked, but I was happy to see that @rubikitch has started a daily Emacs tip series. It’s in Japanese, but Google Translate will get you most of the way there.
  • Help out with family projects: This is mostly what our vacation’s been like. Awesome!
  • Do a calendar-year annual review: Yup, done. Although I really should put this in January’s plan anyway, since I like waiting for the numbers from Quantified Awesome…

I’m mostly normal again in terms of sleep and energy, but I’d like to get back into exercise.

In January, I plan to:

  • Set up a rhythm of monthly Emacs hangouts and Emacs chats
  • Shift my finances around a bit so that I’m more relaxed
  • Sort out some small snags with consulting
  • Get the exercise ladder habit going again. Sure, I know it might get disrupted, but the important part is to keep starting.
  • Make little improvements around the house, so it doesn’t end up waiting for vacations

Blog posts

Sketches

  1. 2014.12.01 Colouring inspiration guide – drawingBlogged
  2. 2014.12.01 The Inner Game of Work – W Timothy GallweyBlogged
  3. 2014.12.04 Sketchnote Army Interview – Sacha ChuaBlogged
  4. 2014.12.10 Sketched Book – The Stoic Art of Living – Inner Resilience and Outer Results – Tom MorrisBlogged
  5. 2014.12.11 What is good for me to do whenBlogged
  6. 2014.12.12 Sketched Book – Just Fucking Ship – Amy Hoy and Alex HillmanBlogged
  7. 2014.12.13 Sketched Book – Start With Why – Simon Sinek
  8. 2014.12.14 Sketched Book – Write Faster Write Better – David A FryxellBlogged
  9. 2014.12.25 Sketched Book – Take Charge of Your Talent – Three Keys to Thriving in Your Career, Organization, and Life – Don Maruska and Jay PerryBlogged
  10. 2014.12.31 Sketched Book – The Checklist Manifesto – How to Get Things Right – Atul GawandeBlogged

Emacs kaizen: ace-isearch combines ace-jump-mode and helm-swoop

January 7, 2015 - Categories: emacs
This entry is part 3 of 4 in the series Emacs Kaizen

I’m a fan of clever little things that change their behaviour depending on what you’re doing while letting you mentally think of it as just one function.

ace-isearch looks like it’ll be useful for collapsing three different functions into one mental thing in my head:

  • jumping to a specific character that I can see (ace-jump-mode)
  • searching through a buffer for a few characters (isearch)
  • doing helm-swoop to quickly preview and navigate through matching lines in a buffer

If you install the ace-isearch package and turn on global-ace-isearch-mode, then searching for a single character triggers ace-jump-mode, searching for less than 5 characters triggers isearch, and anything longer triggers helm-swoop-from-isearch. You can customize those thresholds, of course.

Neat!

Predictable advice about productivity

January 8, 2015 - Categories: productivity, writing

Let me think out loud a bit about this, since there’s something here that I want to dig into.

Someone asked me if I’d consider answering the question “What’s your morning ritual/routine that helps you stay productive and organised throughout the day?” for inclusion in a blog round-up.

Ordinarily, I’m not too keen on answering surveys or filling out questionnaires from people. I know it’s a popular content-generation technique and that bloggers like doing it because it encourages people to link, but there’s something about the format that feels a little meh. I’m even less enthusiastic about blog roundups because the typical format–a list of names, links, and a quoted paragraph or two–doesn’t lend itself well to nuanced observation or discussion.

Still, I’d been thinking about reflecting on the topic for a while, so I bumped it up my list of things to write about and drafted this: Relaxed routines.

I sent a sneak peek of the draft to the person who asked me, and he responded:

The fact that you wrote “Sometimes I think of three things I would like to do that day, and I type a few notes and thoughts into Evernote” is very interesting because other experts also think of 3 things they want to do every morning and go after them.

And I thought, no, that’s not the point I want to make. Which made me think: What is the point I want to make? I said:

When you write, don’t look for the same, old, common, generic advice. Look for what’s unusual or unintuitive or idiosyncratic.

Come to think of it, I should probably expand on this thing about slowing down, taking notes, and sharing them, since a lot of people are worried about interrupting momentum or giving away their secrets. To me, that’s more interesting than picking a few priorities for the day, which (as you noted) many other people do.

So there’s an interesting thought there that I’m going to flesh out and add to the draft. Perhaps by the time you read this, I’ll have already added and posted it.

Anyway. This got me thinking about the predictability of most productivity advice. If I crack open a newly-published book on productivity or click on one of the countless blog posts that flow into my streams, I know that more likely than not, it will tell me to: Wake up early. Prioritize. Don’t start with e-mail. Take care of your health.

It’s about as surprising as reading a personal finance book that tells me to spend less than I earn. Granted, there are probably lots of people for whom the repetition of these concepts helps.

I wonder how to go beyond the same old advice. What kinds of information have been helpful for me when I want to change? What would be more helpful for other people? How can I go beyond writing generic thoughts myself? How can I notice and dig into the differences? How can I learn from more divergences?

Here’s what I’ve found helpful:

  • Collections of different approaches, so that I can experiment and find out what works for me. I don’t read books looking for the One True Way to manage your tasks. I look for the diversity of systems described by different people so that I can extract ideas that I can play around with. That also means that I don’t want trite advice that I already have previous samples of. I’m looking for new stuff, things to make me go “Hmm, let me try that.”
  • Pointers to interesting people, which is related to the first benefit. For example, when reading about how scholars managed information before computers (Too Much to Know: Managing Scholarly Information Before the Modern Age), I came across historical role models like Seneca and Pliny. That led me to learn more about their stories so that I could understand their techniques in context. It isn’t just about isolated pieces of advice, but people whose lives that advice came from and why they learned that. Plus points for people I can identify with or be inspired by: “Oh, she did that, so I can probably pull off something similar too!”
  • Behind-the-scenes thoughts: Reading people’s thoughts about their own systems is more interesting for me than reading people’s conjectures about other people’s secrets. I like reading blog posts from people who are thinking out loud, because that lets me peek into other people’s thought processes and watch how they learn. I like seeing the in-between stuff, not just the polished products.
  • Reflection questions, so that I can direct my awareness to things I might otherwise overlook, and so that I can evaluate things.
  • Research, particularly with non-intuitive results. For example, applied psychology tells us our brain is subject to all sorts of fallacies, and being aware of things like sunk cost fallacy helps me try to correct for them.

So with that in mind, how can I improve that reflection on routines so that I and other people can get more value from it?

Let me think about potential points of divergence from common wisdom, and why I’ve chosen those ways:

  • I sleep in instead of getting up early. For me, it’s important to mostly go to bed at the same time W- goes to bed (unless he’s staying up really late). Since that’s usually between 12 AM to 1 AM and I need a bit more than 8 hours to feel well-rested, this means I usually get up between 8:30 and 9:30. I organize the rest of my schedule around this, including avoiding all morning meetings.
  • I follow my energy instead of forcing myself to stick to a plan. I used to block off time to work on specific things, but I realized that I enjoy flexibility and I work better with an open schedule. More about this.
  • I don’t make specific, measurable, time-bound goals. I found that I’m not motivated by “urgent” deadlines that I set myself. Instead, I keep a large list of small tasks, and I use those to keep moving forward on different things.
  • I slow down to take notes. Many people tell me they don’t have the time to take notes. I make note-taking part of the way I do things, whether it’s thinking about a decision, learning about a new topic, or debugging a problem. It’s not really slowing down, actually. I suspect that I make slower progress when I don’t take notes, because my mind gets more jittery and has to cover the same ground repeatedly.
  • I share what I’m learning. People are often concerned about giving away their secrets, looking foolish, or letting go of competitive advantages. I find that blogging helps me learn more, connect with interesting people, and get more stuff done.
  • I don’t worry about being responsive. I’m very casual about responding to e-mail and blog comments. I can go a week or two (and sometimes more!) before replying, although I check more frequently than that. I treat them as long-term asynchronous conversations, not as firm commitments. This lets me see my e-mail mostly positively as a source of interesting questions and ideas, rather than as an obligation that gets in the way of Real Work.
  • It’s easy for me to choose slack over status or stuff. This is more of a personal finance thing, I think. I’m picky about the things I swap my life for, because I prefer space, freedom, and resisting hedonic adaptation. This is why it’s easy for me to ignore advertising.
  • I’ve shut up the “You’re not an artist!” internal self-censor so that I can use visual thinking to explore ideas. People often tell me that they wish they could draw sketchnotes too. Pointing out that I draw like a 5-year-old still doesn’t seem to be enough to help them get over that mental barrier. Someday I’ll probably figure out how to help people hack around that.

For each of these choices, there are probably thousands of other people (at least) who do the same thing. That’s okay. In fact, that’s terrific, because then we can swap notes. =) I don’t have to say totally unique things. I’m not sure I can. I just want to add more to the conversation than generic “advice.”

So how do those choices influence my everyday routines? Well, waking up when I feel like it is an obvious one. Writing, drawing, and publishing throughout the day is another. This 5-year experiment is another result of those choices.

The most useful change that people can experiment with, I think, is the one of writing stuff down, even if they don’t publish it. Not just plans and reviews (although those are good places to start), but the in-between stuff, the “I’m not entirely sure where I’m going with this” stuff. It could be a text file or a document or a paper notebook – just somewhere you can leave breadcrumbs for your brain so that you can come back to things after interruptions and so that you can go back in time.

But journaling is also part of the set of standard productivity advice, so what can I add here? The reassurance that no, it doesn’t make you go slower, it actually lets you cover more ground? A demonstration, so that people can see what that looks like (especially over years)? Workflow tweaks to better integrate it into the way you do things? Personal knowledge management ideas for organization? Surveys of other people’s systems so that we can pick up great ideas?

If I want some fraction of the people who read me to pick up this writing habit, what I can do to help them (you!) get over any barriers or excuses?

That’s what I should write. I’m not going to be able to trigger that epiphany in one excerpted paragraph in a list of twenty or fifty or people. But I can always explore the idea on this blog (with your help =) ), and other people can link to or summarize whatever they want, and who knows what conversations can grow.

Thinking about how to make better use of Yasnippet in my Emacs workflow

January 9, 2015 - Categories: emacs, org

One of the awesome things that Karl Voit demonstrated in this Emacs Chat was how he used YASnippet and Org Mode to quickly create projects with several related tasks, such as when organizing a group to attend an event. He selected the snippet and filled in different fields like the artist name and the event date, and Emacs generated all these sub-tasks and e-mail templates with the information already filled in.

I’ve used YASnippet once or twice, but mostly I’ve been using org-capture and org-capture-templates instead. YASnippet looks like it might be more flexible because you can fill in fields in a non-linear order and you can re-evaluate Emacs Lisp expressions as you type.

Lots of people do cool things with YASnippet. For example, it’s popular for programming because it lets people quickly expand short sequences into longer syntax. Check out this Emacs Rocks episode on YASnippet to get a sense of what it can do. (Note: YASnippet has changed its naming convention slightly, so things like yas/text have been replaced with yas-text.) People have used it for e-mail templates and to fill in metadata for blog posts.

I’d like to use YASnippet more. Where can I integrate it into my workflow? Probably wherever checklists and templates make sense. I’ve been thinking about checklists and templates as a way to improve how I do things.

Checklists are good for making sure that you complete tasks more consistently, not missing any important steps. You can work faster when there’s a guide, since you don’t have to keep thinking of the next step each time. The simple act of checking things off can encourage you to put in more effort, since the list shows you your progress. It also makes it easier to remember to follow up.

Templates help you improve the structure of your work. You can make sure you cover all the important parts. If you use similar structures for many things, then people get used to finding information in the same logical places. This doesn’t mean that you’re stuck with cookie-cutter formats. You can still adapt the format to your needs.

I’m particularly interested in using checklists and templates to improve in three areas:

  • Programming: I’d like to write with less friction and use best practices like testing
  • Helping the Emacs community: Checklists can help me make sure I do all the steps to prepare for and make the most of Emacs Hangouts and Emacs Chats. They might also lower the intimidation factor so that I end up scheduling these more often.
  • Writing: I think checklists and templates will help me invest more time into developing thoughts, relationships, and structure.

Programming

As mentioned, YASnippet’s popular for programming. You can take advantage of existing collections of snippets for different programming modes (ex: AndreaCrotti’s collection), or you can define your own.

I’d like to get better at developing single-page applications using AngularJS, Twitter Bootstrap / Zurb Foundation, and NodeJS. YASnippet might let me quickly put together short applications and test suites. If I get my workflow smooth enough, I might even be able to do an app-a-week (or app-a-day) sprint for deliberate practice. There are often lots of fiddly little syntax or keyword things that I look up while writing code. While practising typing those things in again and again will help me memorize them, there’s also some value in automating that part with snippets so that I can focus on the core skills of designing and implementing small web applications.

YASnippet might also be able to help me use Org Mode to keep track of ideas for features or small web applications throughout the implementation process. I wonder if I should implement this using lots of subtasks or using TODO states with logs. TODO states might be easier to filter or visualize with the kanban package for Org Mode. Maybe I’ll try both approaches. In any case, checklists will help me remember to think about designs and tests before implementing the code, and maybe I can keep track of deployment notes, lessons learned, and follow-up tasks.

Emacs Community

I find checklists to be really helpful when setting up live videocasts. I’m usually too frazzled to think of all the steps I need to do at the last minute. Paper checklists are good because I can refer to them while keeping my screen ready to be recorded. Still, an Org Mode-based checklist (possibly with dynamic date fields and e-mail templates provided by YASnippet) might go a long way towards standardizing the before- and after-event process, and that might in turn reduce the friction enough for me to do more of them. Both Emacs Chats and Emacs Hangouts seem to be popular, so it would be good to get more of these on the go.

The process would be something like:

  1. Reach out to the person who’s going to be featured on the Emacs Chat, or at least one other person who’s willing to be there for the Emacs Hangout (so that I don’t end up talking to myself for the first ten minutes, which is Awkward)
  2. Figure out what will be discussed (for Emacs Chats)
  3. Set up a time, considering timezones
  4. Set up the Google+ event page
  5. Update the Google Calendar
  6. Post a notice on Twitter and on my blog (I’ve been forgetting to do this step)
  7. On the day of the event
    1. Do the last-minute push (I’ve been forgetting to do this as well)
    2. Create the Google Hangout on Air
    3. Set it up for Q&A
    4. Invite the other person in for Emacs Chats, or post the URL for Emacs Hangouts
    5. Host the video chat
    6. Remind people where the recording can be found
    7. Update the Google+ page with the link to the next thing
  8. Extract the MP3 from the video, change the properties, and upload it to archive.org
  9. Post a blog post with the embedded video, podcast audio, and quick notes
  10. Transcribe the video or pay for transcription
  11. Edit the transcript
  12. Update the post with the transcript
  13. Update the Google+ event page with the link to the transcript, post to social networks (I’ve been forgetting this)
  14. Update EmacsLife.com, too (yet another thing I’ve been forgetting)

I think it would be totally awesome to get to the point where I can call an Emacs Lisp function that would Do The Right Thing at that point, like posting to Twitter or using something like org-trello to make a Trello card and assign it to the person who does my transcriptions.

Writing

I’m getting the hang of using outlines to write (and I should post a video about this soon), but it might be even cooler if I can get the hang of writing with more structure. For example, Michael Hyatt posted this blog post checklist that he had been using with Evernote. I like it because:

  • The template asks you to be explicit about the post’s objective and subject.
  • It encourages you to add more illustrations, links, and stories.
  • It reminds you to take steps that you might otherwise skip, and you might spend several days revising the post.

I might not use it for every post, but it’s good to flesh out some ideas further, especially the ones where I think I’m onto something particularly interesting.

It would be even cooler if I could take advantage of YASnippet’s dynamic Emacs Lisp evaluation to remind me of relevant links from my blog post outline given the category. I remember playing around with the Remembrance Agent, which monitored a few hundred words around your cursor and brought up files that had similar words. Matching on category isn’t going to be anywhere as sophisticated, but it still might be a good way to refresh my memory. Even if I had a quick Emacs Lisp interactive function that read whatever category property I’d set (chosen from the org-refile-able targets) and displayed the section from my blog post index in another window, I think that would be a pretty neat start.

I tend to draft posts within my sharing outline (which I sporadically publish at http://pages.sachachua.com/sharing/). When I’m done, I delete the subtree, sometimes replacing it with a link to the post to help me follow up on it in the future. This means losing that metadata, though. It might be interesting to keep the metadata so that I can review the goals and backstory of a blog post.

YASnippet can also help me keep track of the TODOs related to a post as well. For example, I might want to come up with sketches, tweet links, or follow up on ideas. If I use a YASnippet to plan my blog post in the first place, then I can create a TODO (possibly with a link back to the blog post) that I could leave in place or refile to the appropriate location in my regular Org Mode files.

I don’t think YASnippet dynamic fields persist after the file is saved and reloaded, though. How would that work if I need to change things? Maybe I can use multiple-cursors to mark all the matching text in the subtree, or do other clever things with it…

Next steps

Okay. It looks like setting up YASnippet for Emacs checklists would probably give me the quickest win. Programming is also pretty straightforward. Writing might be interesting too, if I can get the hang of working with that kind of structure. Let’s see how that goes. Once I figure out what those snippets will be like, I’ll post them on Github somewhere. =)

Is YASnippet part of your workflow? Have any thoughts, suggestions, or neat stories?

Weekly review: Week ending January 9, 2015

January 11, 2015 - Categories: review, weekly

This was the first week back from vacation. It had a good balance of writing (2 days), coding (2 days), and consulting (1 day). I wrote a couple of long posts that you’ll see over the next few weeks. I fixed some bugs on Quantified Awesome, and I used the Flickr API to remove duplicates and link photos with my blog posts. Fun!

I started a new habit of drawing my thoughts on at least five index cards each day. It’s a good way to get my brain going in the morning. After scanning them, I split them by topic into piles on my desk. It’s an easy way to see where my thoughts are building up so that I can pull them together into blog posts.

I filed some tax-related paperwork, too: my second T4, and my first T5. I’m looking forward to finding out whether I’ve figured this all out correctly once the other tax slips come in.

Also, it was J-‘s birthday, so we had sushi and cheesecake. Yay!

Blog posts

Sketches

  1. 2015.01.03 Making better use of basement – index card
  2. 2015.01.03 Making better use of kitchen – index card
  3. 2015.01.03 Making better use of phone – index card
  4. 2015.01.03 Sketched Book – So Good They Can’t Ignore You – Why Skills Trump Passion in the Quest for Work You Love – Cal NewportBlogged
  5. 2015.01.03 Social – index card
  6. 2015.01.03 Social bookmarking – index card
  7. 2015.01.03 Why Emacs – index card
  8. 2015.01.04 Automating text – index card
  9. 2015.01.04 Rhythm for learning – index card
  10. 2015.01.04 Thinking in terms of an exchange of time – index card
  11. 2015.01.04 What kind of difference do I want to make, and for whom – index card
  12. 2015.01.05 A reflection on diminishing returns versus compounding growth – index card
  13. 2015.01.05 Developing my imagination and initiative – index cardBlogged
  14. 2015.01.05 Different ideas about mastery – index card
  15. 2015.01.05 Figuring out the technical details of this idea or visual archive I want – index card
  16. 2015.01.05 How can I get better at summary posts – index card
  17. 2015.01.05 Managing my idea pipeline – index cardBlogged
  18. 2015.01.05 Quick idea studies – index cardBlogged
  19. 2015.01.05 Seeing opportunities for abbreviations and text automation – index card
  20. 2015.01.05 Surprise experiment, self-directed life – index card
  21. 2015.01.05 Thinking about my archive – index cardBlogged
  22. 2015.01.05 What can I learn from artists about learning – index cardBlogged
  23. 2015.01.05 Why studies for drawing or writing thoughts – index cardBlogged
  24. 2015.01.06 Abbrevations – index card
  25. 2015.01.06 Competence and mastery – index card
  26. 2015.01.06 Figuring out information flow – index card
  27. 2015.01.06 Is this enough for me – index card
  28. 2015.01.06 Phrases – index card
  29. 2015.01.06 Planning my safety nets – index card
  30. 2015.01.06 Safe, a little better, comfortable – index card
  31. 2015.01.07 Code insertion – index card
  32. 2015.01.07 Mapping the connections in my blog – index card
  33. 2015.01.07 Real Work – index card
  34. 2015.01.07 Sketched Book – The Progress Principle – Using Small Wins to Ignite Joy, Engagement, and Creativity at Work – Teresa Amabile, Steven Kramer
  35. 2015.01.07 Templates – index card
  36. 2015.01.07 Text transformation as part of expansion – index card
  37. 2015.01.08 How to use what you read – index card
  38. 2015.01.08 Imagining Emacs hangouts – index card
  39. 2015.01.08 Imagining coaching or guiding others – index card
  40. 2015.01.08 Learning as an event – index card
  41. 2015.01.08 Team-building activities – index card
  42. 2015.01.09 Cross-pollination of ideas – index card
  43. 2015.01.09 Take notes while you read books – index card
  44. 2015.01.09 Time is greater than money – index card
  45. 2015.01.09 What am I learning more about, and how can people help – index card
  46. 2015.01.09 What do I do on my non-consulting days – index card

Link round-up

Focus areas and time review

  • Business (36.8h – 21%)
    • Earn: E1: 1-2 days of consulting
    • Revise transcript for Magnar Sveen
    • Earn (6.7h – 18% of Business)
      • Prepare invoice
    • Build (24.4h – 66% of Business)
      • Drawing (10.3h)
        • Organize my sketches for 2014
        • Post The Obstacle Is The Way to blog
      • Delegation (0.0h)
      • Packaging (1.8h)
      • Paperwork (5.8h)
        • File T5 for 2014
        • File T4 for 2014
      • Parse XML from Evernote and extract all the journal entries
      • Remove duplicates from Flickr list
      • Fix csa_foods
      • AJAXify clothing log
      • Fix the menu on small screens
      • Change error message since I don’t get notified about stuff
      • Clear up Documents/Documents confusion
      • Re-cross-reference blog posts with Flickr. What’s a nice, sustainable way of doing this?
    • Connect (5.7h – 15% of Business)
      • Talk to journalist about Quantified Self
      • Find contact information and timezone
  • Relationships (7.7h – 4%)
    • Check protocol and copy dates
  • Discretionary – Productive (26.4h – 15%)
    • Emacs (1.3h – 0% of all)
      • Revise transcript for Thomas Kjeldahl Nilsson
      • Blog about most recent Emacs Hangout
      • Developing Emacs micro-habits: Text automation
    • Get passport pictures
    • Scan passport
    • Apply for passport
    • Pick up my lunch
    • Writing (16.8h)
      • Smooth out image workflow for writing
  • Discretionary – Play (9.7h – 5%)
  • Personal routines (20.7h – 12%)
  • Unpaid work (8.4h – 5%)
  • Sleep (58.2h – 34% – average of 8.3 per day)

Sketched Book: Start With Why: How Great Leaders Inspire Everyone to Take Action – Simon Sinek

January 12, 2015 - Categories: purpose, visual-book-notes

Do you talk about what you do and how you do it? Or do you start with why you do the things you do and why this matters? In Start With Why (2009), Simon Sinek writes about how great companies have a clear purpose and identity that inspires employees and earns customer loyalty. Here’s my sketch of the key points from the book so that they’re easier to review or share. Click on the image to view or download a high-resolution version that you can print.

2014-12-13 Sketched Book - Start With Why - Simon Sinek

What are my whys?

  • Visual thinking
    • My selfish reason for visual thinking is because I want to be able to learn, think, and remember more effectively, so that I can live a better life.
    • My altruistic reason for sharing visual thinking is because there are lots of people who enjoy learning from drawings more than text or audio or video. I want to share how I’m learning, but more than that, I want to inspire people to take these techniques and use them for their own. From the resources I share, people can see that you don’t need to draw particularly well in order to use doodling as a way to explore the world or untangle your thoughts.
  • Emacs
    • My selfish reason for Emacs is because I have fun tweaking my editing environment and doing so helps me work better. It tickles my brain. In addition, helping the Emacs community thrive contributes to the longevity of Emacs, which means it will keep growing, which means I probably won’t have to switch to some other tool in the future. (Planning-ahead Sacha plans ahead!)
    • My altruistic reason for Emacs is because I think something incredible happens when you take control of your tools, shaping them to fit your needs, expanding your imagination along the way. I want to help people become intermediate users and power users because I’m curious about what they’ll build for themselves and what they can share with other people. Also, the Emacs community has awesome people. =)
  • Experimenting
    • My selfish reason for experimenting (lifestyle, semi-retirement, business, ideas, etc.) is so that I can figure out what works well for me.
    • My altruistic reason for sharing my experiments is to encourage other people to question their assumptions, look for ways to test their hypotheses, and gradually shape a life that fits them well. Come to think of it, it’s similar to why I like helping people personalize Emacs. If I can help people explore the possibilities in their life, we might come across interesting ideas along the way.

What are your whys? Why do you do what you do, and why does that matter?

Get “Start With Why” on Amazon (affiliate link) or from your favourite book source.

Like this sketch? Check out http://sketchedbooks.com/ for more. Feel free to share – it’s under the Creative Commons Attribution License, like the rest of my blog.

Deliberately making sense

January 13, 2015 - Categories: learning, writing

When it comes to connecting the dots between ideas, would you rather be methodical or inspired?

We prize the flashes of genius, the intuitive spark. We idolize inventors who bring together ideas from different fields in a brilliant moment. The tortoise wins in children’s books, but history belongs to hares.

I would rather be methodical, I think. I’d rather get better at taking lots of small steps instead of counting on big leaps. I plan assuming mediocrity, not talent, and then I try to build towards excellence.

Just relax and the ideas will come to you, people sometimes say. Yes, I do some of that, but I’m more interested in conscious, deliberate action. The sparks will come when they want, but in the meantime, why not get better at preparing the groundwork or making progress? I think you can get better at making sense of things, coming up with ideas, seeing gaps. This is a skill you can develop. You’re not limited to waiting for a fickle muse or wishing you’d been born a hare.

The aha! moments of unconscious connection seem to come more readily when you keep more thoughts in your head, because you have more opportunities to connect the dots. I try to keep very little in my head, as I’m both forgetful and distractable. (I suppose this self-image is something I can change, but it has useful consequences, so I keep it.) I write down as much as I can, which frees me up to remember only hooks and summaries that let me look up more information as I need it.

In fact, I often choose slow exploration instead of a whirlwind of insight. I’d rather take notes as I think instead of jumping from one topic to the other, even if observation changes the nature of thoughts. After all, there are plenty of times when I can think but I can’t write, so I can let my mind meander then. When I’m near a computer or notepad, I may as well take advantage of those tools. If I can capture a thought, then I can remember it, and this helps me build up knowledge over time.

Instead of relying on my brain to trigger an aha! moment out of the blue, I usually reflect on a single topic and see what other associations it brings up. I might link to other blog posts or sketches, include book excerpts, or dig through my private notes for more thoughts. Most of these reflections take small steps forward. Others bring together two or more streams of thought.

I’m often limited by my forgetfulness. I may remember a few relevant references, and I search my blog and my notes for more. However, I don’t always cast a wide enough net. There’s a difference between knowing you’ve forgotten something, and not even thinking that you’ve forgotten something. The first is annoying, but the second is a bigger missed opportunity.

The best way around the associative limitations of my brain seems to be other people. I love it when people tell me how something I’ve written reminds them of a book or someone else’s blog post (sometimes one I’d read and forgotten, sometimes completely new to me), or even how it reminds them of another post of mine.

I can’t count on people to suggest the missing links for most things, though. Fortunately, computers are getting better at suggesting associations. Search engines help when you know what you’re looking for. When you don’t, other tools can analyze what you’re working on and suggest items that are similar in content. I often use Amazon’s book recommendations to find other books I should read. I’ve played around with Remembrance Agent before, and have often envied Devonthink’s ability to suggest related notes. Evernote just released a new Context feature that’s supposed to do something similar. I prefer Emacs for writing anyway, and I don’t have something quite like that set up yet.

The more manual approach of keeping a categorical index of my blog posts lets me get a quick overview. When a category grows too large, I usually break it down into smaller groups. I also take advantage of the juxtaposition of posts in my blog archive when I do my monthly and yearly reviews. Taking a step back helps me see the patterns in my thinking.

Other aspects of connecting the dots also lend themselves to deliberate practice, focusing on one sub-skill at a time. For example, when I read a book, I can practise taking a few moments to place it in the context of other books I’ve read about the topic. With which other books does it agree, and where does it diverge? Thinking about this process lets me isolate and get better at one specific aspect at a time, and that helps me improve as a whole.

Another benefit of using explicit processes to help me make sense of things is that other people can try what I’m learning. I care less about idiosyncratic leaps dependent on individual talent and more about improvements that other people can experiment with. For me, it makes less sense to tell someone, “Be more creative!” and more sense to say something like, “Forced associations are a way to enhance your creativity” and share examples. If I think about how I do things–how my processes are similar to others’, and where it diverges–I can describe them to other people, who can pick up ideas and give me feedback.

So that’s why I choose to be a slow thinker, making sense through process rather than intuition. But I’m getting faster at slow thinking, and that’s opening up more possibilities. I grew up speed-reading and touch-typing, which is a good pair of advantages. To that, I’ve added programming, automation, writing, and different types of note-taking. I’m working on getting the hang of outlining, indexing, reviewing, and synthesizing. There’s a lot to learn, but I’m confident that I can keep improving.

I love swapping notes with other people who’ve made similar choices–the slow thinkers, the methodical ones, the ones who have thought about how they do things and how they think about how they do things. I’m not looking for fast fixes or magic solutions, just ideas for little experiments to try.

Hares might make for better stories, but tortoises have more tricks to share.

Possibly related:

Kahneman’s Thinking, Fast and Slow feels a little related to this thought too, but it’s not quite the right fit.

Do you have any favourite tricks for slow thinking? Are there any tricks I use that you’d like to learn more about?

2015-01-09 Emacs Hangout

January 14, 2015 - Categories: emacs

WELL. That was odd. Somehow the Google universe bifurcated and I spent the first forty minutes awkwardly talking to myself (braindumping Emacs tips) while the rest of the people in the Emacs hangout (1) wondered about my non-existence, and (2) got on with a great conversation about Emacs. I even did the “Hey, can folks hear me?” sort of thing and since some people were in the text chat and confirmed there were technical issues, I assumed that (a) we were talking about the same technical issues, and (b) many of them were inaudible because of said technical issues (or because they were at work, or whatever). The test audio played fine on my end, and the microphone sound levels looked fine too. I could see the group chat and everything. When it finally occurred to me to refresh my screen (which I had hesitated to do because that might end the session for everyone), I finally joined.

BIG THANK YOU to all the Emacs geeks who shrugged at my absence and carried on chatting. =)

Anyway. Fortunately, the recording is actually from their side of the parallel universe, and my interminable, horribly embarrassing blathering is lost forever. (I hope.) I mistakenly clipped it before, but it should be back to normal now.

Here it is.

http://youtu.be/c6abq9Wv9Wk

Let’s get Emacs Hangouts sorted out for February and March. I think I can avoid technical debacles like this if I schedule something where I know at least one other person will turn up a little early and help me with a tech check. If you volunteer, we can pick a time that matches you. (Yay!) Leave a comment or e-mail me at [email protected] . =)

Also, since mailing lists can be useful, here’s one for Emacs Hangout announcements. You’ll get an e-mail to the Google+ Event when we figure out date/time, and another reminder the day before the event. Sign up at http://eepurl.com/bbi-Ir

Think more effectively by typing to yourself

January 15, 2015 - Categories: writing

Whenever I need to think, I often switch to my text editor and start typing. Whether I’m coding, debugging, making decisions, or simply figuring things out, I find that typing helps a lot.

Typing keeps a record of your thoughts, which is invaluable when it comes to untangling complexities or picking up where you left off after interruptions. Typing feels more socially acceptable than talking to yourself out loud. You don’t interrupt other people’s thoughts. You might even look like you’re doing serious work – which thinking is, but it’s sometimes less obvious when you’re just staring into the distance. You feel a sense of progress, and you can stop yourself from endlessly retreading the same topics.

I sketch my thoughts on paper if I want to play around with visuals or if I want the big picture, but typing feels more useful for having internal conversation, including links and references, and covering lots of ground.

I type at ~120 words per minute, which lets me keep up with my thoughts. I think faster than this, or at least I think I do. But when I think without typing, I often feel my mind jitter between topics like a squirrel on a sugar rush. Handwriting is too slow, talking out loud too ephemeral. Typing is just right. It slows me down just enough to keep my thoughts coherent.

(And really, when I measured how fast I type when I’m copying something and how fast I type when I’m coming up with something from scratch, the result was clear: thinking is the slow part of this process, not typing.)

I often use typing as a way of talking to myself, much like you would talk to someone over social media or instant messaging. I ask myself questions. I explore my uncertainties. I tell myself things that I know or that I want to find out. I put on different hats, adopt different perspectives. I make progress, and I can see that progress. Sometimes it almost feels like I’m simply transcribing a conversation that I’m observing. I can focus on typing and let my thoughts go where they want.

Typing lets me write and think non-linearly. I jump around, fleshing out points, following up on thoughts. Sometimes I organize my thoughts into outlines or link between ideas. As I type, I notice interesting questions or ideas and mark them as TODOs. I can flag them without losing my train of thought or worrying that I’ll forget about them.

At the end, when I’ve written my way towards understanding or resolution, I can step back to get a better look at the choices I’ve considered and my reasons for choosing. I’ve got something that I can extract TODOs from or even neaten up into a blog post. I keep the rough notes in my journal, which is part structured review and part brain-dump of whatever I’m thinking about. That way, I can review these notes, months later, to improve my understanding, see if I made the right decision, and think about what else I would like to learn or do next.

Here’s an excerpt from one of my journal entries:

What’s good to do now, after the sketchnote?

I should focus on other things, I think – limiting flow to encourage balance and planning ahead instead. Besides, I already have three sketchnotes queued. I don’t need to draw my way into February, and I can learn from people’s feedback in order to improve the next sketch. So it’s okay to spread it out to one sketch every other day or so. I’ll try a two-week publishing frequency first, and then I’ll up it to weekly if I manage to queue enough. (Editorial Calendar is handy!)

I think it would be interesting to tweak Emacs to make this sketchnoting workflow even more effective.

How would I do that?

Well, for starters, I can write some Emacs Lisp that copies my basic template, renames it appropriately, adds the date, adds the property, and links to the file. Wouldn’t that be cool?

I wonder if i can drive the redirection from Emacs Lisp as well. I don’t have to do it in WordPress, after all. I can get a snippet that I can copy and paste into the Nginx site configuration for sketchedbooks. Mwahahaha.

Typing to yourself is even more effective when you’re trying to write or debug code. I use Org Mode for Emacs, so it’s easy for me to include links to StackOverflow answers that I’m trying to apply, source blocks with code I’m experimenting with, descriptions of approaches I want to try… If the comic “This is why you shouldn’t interrupt a programmer” resonates with you, then you know how useful it is to have notes on what you’re trying to figure out.

If you’re frustrated when you can’t pin down your thoughts, if you find yourself circling topics but not making much progress, consider typing to yourself. If you don’t type fast enough and you find yourself getting annoyed, invest the time in learning how to type faster so that you can reduce the friction. If you type fast enough to keep up with your thoughs, try using a conversational approach, talking to yourself with different perspectives. Might be a handy way to think more effectively. Good luck, and tell me how that works out for you!

Related:

Thoughts in context: Connecting posts to my blog post index

January 16, 2015 - Categories: wordpress

I’ve been thinking about how to improve the inter-post organization of my blog so that I can write more effectively and so that other people can find things faster. I often link to posts I’ve previously written, but I rarely update old posts to link forward to other related posts. There are quite a few internal linking plugins for WordPress, but they seem more slanted towards SEO and keywords than I’d like.

I wanted to come up with another approach that could take advantage of the big outline of my blog posts at http://sachachua.com/index that I update every month. I’ve found this to be pretty handy for organizing things into finer categories instead of going back and updating lots of posts in WordPress. I can search this easily on my computer by using helm-swoop, and I can move things around using Org Mode.

It got me thinking: Is there a way I can make it easier to connect posts to the index so that if people find an old post useful, they can explore related posts?

So here’s what I came up with: a small See in index link at the end of the post.

2014-12-08 16_45_13-sacha chua __ living an awesome life - Page 2 of 1159 - learn - share - scale

Index link on old posts

Not all the posts are indexed yet, but for those that are, clicking on that link will open up the blog index and scroll it to the right post, highlighting the match, so people can see what else is in the neighbourhood.

2014-12-08 16_45_33-sacha chua __ blog

Matching link

To make this work, I added the following HTML code to my blog index:

<script type="text/javascript">
// from http://www.jquerybyexample.net/2012/06/get-url-parameters-using-jquery.html
function getURLParameter(sParam)
{
    var sPageURL = window.location.search.substring(1);
    var sURLVariables = sPageURL.split('&');
    for (var i = 0; i < sURLVariables.length; i++)
    {
        var sParameterName = sURLVariables[i].split('=');
        if (sParameterName[0] == sParam)
        {
            return sParameterName[1];
        }
    }
}

function sachaScrollToBlog() {
  if (getURLParameter("url")) {
    var link = $('a[href="' + getURLParameter("url") + '"]');
    if (link.length > 0) { 
      $('html, body').scrollTop(link.offset().top - 100);
      link.addClass("highlighted");
    } else {
      alert("Sorry, could not find post in index.");
    }
  }
}

$(document).ready(sachaScrollToBlog);
</script>
<style type="text/css">
a.highlighted { background-color: yellow; padding: 10px }
</style>

Then I added this to the post.php and single.php for my WordPress theme:

<?php
if (get_the_date('Y') >= '2008' && get_the_date('Y-m') < date('Y-m', time() - 60 * 60 * 24 * 7 * 2)) {
  print '<a href="http://pages.sachachua.com/sharing/blog.html?url=' . get_permalink() . '">See in index</a>';
}
?>

The date condition is there to minimize frustration. I’ve indexed posts published 2008 or later, and I usually post an updated index within the first half of the month. I might spend some time indexing older posts; if I do, I’ll update the starting position.

It would be interesting to refine my writing workflow so that my blog index is always up to date. That way, even new posts will have this magic indexing power. It might be difficult to get that squared up with my scheduling, though, since I sometimes write a few weeks in advance. Anyway, neat, huh? This should make the archives marginally more useful. =) Good for me too!

Drawing thoughts on index cards

January 17, 2015 - Categories: blogging, drawing

I’ve got quite a backlog of posts I want to publish, but I’ll squeeze this one in first. I want to think about how I can make the most of this new old (2011!) index card habit, and whether I should reconsider that voluntary bottleneck of publishing one post a day.

For the past two weeks, I’ve drawn at least five index cards each day. (You can find them on Flickr.) Each card explores a single thought. I like the way this lets me briefly capture what I’m curious about. I’ve included many of them in blog posts, grouping several thoughts into a larger chunk that’s easier to link to.

Still, at the present rate, my monthly review for January will link to well over 150 sketches. Perhaps I’ll change the monthly review section to list only the sketches that haven’t made it into blog posts yet. I’ve been keeping a digital equivalent of the roughly-sorted piles of index cards on my desk. It helps me see growing clusters of ideas and choose ones I want to develop with additional sketches or summarize into blog posts.

2015-01-14 Projecting my writing trajectory -- index card #writing

2015-01-14 Projecting my writing trajectory – index card #writing

Also, at the present rate of writing 1-3 blog posts a day (except for Thursdays, when I focus on consulting, and the weekends, when I focus on household life), I will keep accumulating scheduled posts. At some point, this will become unwieldy. It doesn’t make sense to schedule posts a year in advance. Even a backlog of three months seems too disconnected.

I can spend less time writing, but I’ve firmly wired it into the way I learn, so that’s hard. Alternatively, I could spend more time writing, developing thoughts over more time and packing denser experiences into a post. This approach might work.

2015-01-14 Projecting my trajectory -- index card #writing #sharing #pipeline

2015-01-14 Projecting my trajectory – index card #writing #sharing #pipeline

I can also get ideas out in other ways. My blog is the main archive I trust, but I can give myself permission to share one-off sketches on Twitter. For example, this sketch about keeping your drink safe from cats: it’s not quite a blog post and I don’t think I’ll develop the thought further, but it might be okay to share it on its own.

So, if I write blog posts for the thoughts that are already developed and tweets for the one-offs that won’t be developed further, that leaves the ideas that are waiting to be developed. They wait because I’m still figuring things out, or because they aren’t quite connected to other thoughts, or because my attention has moved on to other things. In Toyota Production System terms, they are muda – waste because of waiting or possible over-production.

I want to do better. What are some ways I can improve at this?

2015-01-16 Reflecting on reflecting with index cards -- index card #thinking #drawing

2015-01-16 Reflecting on reflecting with index cards – index card #thinking #drawing

 

2015-01-13 How can I do morning index cards more effectively -- index card #drawing

2015.01.13 How can I do morning index cards more effectively – index card #drawing

One way to reduce waste is to reduce quantity. Is five a good number for index cards, or should I reduce it to three? I think five works well for me. It forces me to dig deeper into a topic or to capture some of the other thoughts I have floating around.

Another way to reduce the waste in this process is to be more focused. If I think about and articulate 2-3 key questions for the week, that might guide most of my index cards. But then interesting ideas come up during the week, and I draw lots of cards for those as well. I turn many of my index cards into blog posts on the same day, so within each day, there’s focus. If I try to use any “extra” index cards to build on a previously-drawn thought, that helps me connect.

A third way is to reduce my attachment and let things go. Perhaps I might decide that after I make a monthly index of unblogged cards, I’ll clear that index and archive the physical cards. That way, each month starts fresh, but I still have the ability to go back and look for those roughly-categorized cards in case I have an idea that’s strongly connected to that. I don’t have to worry about visualizing this archive, tracking my statistics, using all the dangling threads, or getting to 100% use.

So that can help me deal with index cards, but what about blog posts? The benefits of limiting my blog to one post a day are:

  • I occasionally add to or revise a scheduled post, especially with feedback from sharing drafts
  • I can schedule different kinds of posts for a week, turning my sprint-type learning into a variety that helps readers
  • People don’t get as overwhelmed (although daily posts are already more frequent than most other blogs do, and I’m pleasantly boggled that this is the most frequent option chosen by people subscribing to the mailing list)

The downsides are:

  • If I write something useful, whoever searches for it while it’s in hidden draft mode won’t come across it, but I guess that’s almost the same as if I hadn’t written it at all
  • It delays the feedback cycle
  • Sometimes posts get out of date

One option is to go back to publishing two posts during the weekend: a weekly review, and maybe another thinking-out-loud/reflection post, since that’s the one that has the most surplus.

Another option is to post two times a day. I’m a little less keen on that, although it might be doable if I can keep my main archive but split off specific, lower-traffic, topic-focused views that people can subscribe to.

A third option is to write longer posts. I find my constraints on chunk size to be helpful, so maybe not.

Hmm. Maybe I’ll publish two posts during weekends, and then revisit this when I find myself scheduling three months out… =) Suggestions?

Weekly review: Week ending January 16, 2015

January 18, 2015 - Categories: review, weekly

This was a good week for writing code: little utilities to help me manage my sketches and Evernote entries, some code for my consulting client, and so forth.

The Emacs microhabit I focused on was switching windows. I found that C-u C-u with ace-window (which I’ve bound to C-x o) is handy for deleting windows, and binding a windmove-type keymap to the yy keychord is useful for switching windows with my cursor keys.

Next week, I’ve got an Emacs Chat with Steve Purcell. Looking forward to it!

Blog posts

Link round-up

Sketches

  1. 2015.01.10 Favourite meals – index card #cooking
  2. 2015.01.10 How did schools of philosophy work in ancient Greece and Rome – index card #independence #philosophy
  3. 2015.01.10 Lessons from ancient Rome – index card #philosophy
  4. 2015.01.10 More about philosophers – index card #independence
  5. 2015.01.10 The idea of the Minimum Viable Post – index card #writing #blogging
  6. 2015.01.10 What is the goal of my tracking – index card #quantified
  7. 2015.01.10 What questions do I want to explore with data – index card #quantified
  8. 2015.01.10 Writing into the future – index card #writing #blogging
  9. 2015.01.11 Current state and future states – index card #writing
  10. 2015.01.11 Learning from what I like about books – index card #writing
  11. 2015.01.11 Making better use of Evernote – index card #evernote
  12. 2015.01.11 Neko sleeping – index card #cat
  13. 2015.01.11 Snacks we can make – index card #cooking
  14. 2015.01.11 What makes a good other-focused post – index card #writing
  15. 2015.01.12 Considering ideas for QS mini-guide – index card #quantified #planning
  16. 2015.01.12 Emacs microhabit – window management – index card #emacs
  17. 2015.01.12 How I stopped looking for answers – index card #reading
  18. 2015.01.12 More thoughts about QS mini-guide – index card #quantified #planning
  19. 2015.01.12 Quantified Self and small steps – index card #quantified
  20. 2015.01.12 Reverse outlining – index card #writing #organization #outlining
  21. 2015.01.12 Structure for QS mini-guide on small steps – index card #quantified
  22. 2015.01.12 Undirected questions versus directed questions – index card #writing
  23. 2015.01.12 Weekly reviews – index card #writing
  24. 2015.01.12 What am I learning about – index card #plans
  25. 2015.01.12 What will this QS guide look and feel like – index card #quantified #planning
  26. 2015.01.12 When is Emacs a good fit – index card #emacs #beginner
  27. 2015.01.13 Emacs and the beginner’s mind – index card #emacs #beginner
  28. 2015.01.13 Evaluating posts written for others – index card #writing #questions #blogging
  29. 2015.01.13 Hacklab – index card #connecting
  30. 2015.01.13 How can I do morning index cards more effectively – index card #drawing
  31. 2015.01.13 In terms of Emacs, where can I help – index card #emacs
  32. 2015.01.13 Layout studies for QS mini-guide – index card #study
  33. 2015.01.13 Other Emacs mindset tips – index card #emacs #beginner
  34. 2015.01.13 Using Node as a scripting tool – index card #javascript #nodejs #coding #scripting
  35. 2015.01.13 Visual studies for QS mini-guide – index card #study
  36. 2015.01.13 What’s getting in my way when it comes to reverse outlining – index card #outlining #writing #obstacle
  37. 2015.01.14 Breaking down excuses – index card #excuses #breakdown
  38. 2015.01.14 Filling in the occupational blanks – index card #experiment #occupation
  39. 2015.01.14 How to keep your drink safe from cats – index card #life #cats
  40. 2015.01.14 Projecting my trajectory – index card #writing #sharing #pipeline
  41. 2015.01.14 Projecting my writing trajectory – index card #writing
  42. 2015.01.14 Setting constraints for my writing chunks – index card #writing #constraints
  43. 2015.01.14 Understanding different types of inspiration – index card #inspiration #breakdown
  44. 2015.01.14 What does it mean when something takes too much time – index card #excuses #breakdown
  45. 2015.01.15 Helping people me more selective about email questions – index card #teaching #email
  46. 2015.01.15 How to Read and Why – Harold Bloom – index card #book #raw #reading
  47. 2015.01.15 Imagining coding amazingly – index card #wildsuccess #coding
  48. 2015.01.15 Imagining packaging amazingly – index card #packaging #wildsuccess
  49. 2015.01.15 Imagining working out loud amazingly – #wildsuccess #sharing #writing
  50. 2015.01.15 Imagining writing amazingly – index card #writing #wildsuccess
  51. 2015.01.15 Planning a bibliography Org file – index card #emacs #org #reading
  52. 2015.01.15 Slowing down e-mail – index card #email #connecting #pace
  53. 2015.01.15 Think Better – Tim Hurson – index card #book #raw #thinking #creativity
  54. 2015.01.15 What if I required people to pay it forward – #workingoutloud #sharing #teaching
  55. 2015.01.15 Writing on Both Sides of Your Brain – Henriette Anne Klauser – index card #book #raw
  56. 2015.01.16 How can I improve my experience of e-mail – index card #email #kaizen
  57. 2015.01.16 How much time does it take – index card #response #question
  58. 2015.01.16 Morning routines – index card #life #routines
  59. 2015.01.16 Reflecting on reflecting with index cards – index card #thinking #drawing
  60. 2015.01.16 Thinking about why I don’t meditate – index card #reason #meditation

Focus areas and time review

  • Business (37.0h – 21%)
    • Earn (7.1h – 19% of Business)
      • Earn: E1: 1-2 days of consulting
    • Build (20.2h – 54% of Business)
      • Drawing (10.1h)
      • Delegation (0.0h)
      • Packaging (1.9h)
        • Change sketchnotes to Dropbox
      • Paperwork (0.2h)
      • Upload image to Flickr using node
      • Make a cal-heatmap of my Flickr
      • Simplify Gemfile in order to improve Travis CI performance for Quantified Awesome
      • Parse XML from Evernote and extract all the journal entries
      • Fix cucumber for travis
    • Connect (9.7h – 26% of Business)
      • Talk to journalist about Quantified Self
      • Send resources to journalist
      • Photograph for Star
      • Go to Quantified Self Toronto meetup
      • Check out Sketchnote Hangout
      • Brainstorm ideas for final project in learning course
      • Check out #lrnbook
  • Relationships (1.6h – 0%)
  • Discretionary – Productive (21.8h – 13%)
    • Emacs (1.6h – 0% of all)
      • Set up next Emacs Hangout and announce on mailing list
      • Make sure Emacs Chat is set up on iTunes
      • Set up schedule
      • Update EmacsWiki:Yasnippet
      • Blog about most recent Emacs Hangout
      • [#A] Create Emacs Chat event on Google+ for chat with Steve Purcell
      • Get node to store Org links, oooh
      • Finish Avdi’s transcript
      • Revise transcript for Magnar Sveen
      • Research tidbits for Emacs Chat
      • Clean up uDemy formatting for Emacs Basics
      • Have Emacs Chat with Steve Purcell
      • Contribute to Yasnippet docs
      • Try out Tern
    • Writing (11.2h)
      • Outline mini-guide for QS small steps
      • Revise writing post to include images
    • Ask two guarantors for passport
    • Dip into Learning How to Learn course
      • Complete quiz 3
    • Pick up my lunch
    • Redeposit into TFSA
    • Review dangling sketches and posts
    • Start bibliography Org file
    • Apply for passport
    • Invest in bonds in TFSA
  • Discretionary – Play (4.7h – 2%)
  • Personal routines (25.4h – 15%)
  • Unpaid work (15.0h – 8%)
  • Sleep (62.5h – 37% – average of 8.9 per day)

Minimizing upward or downward skew in your sketchnotes

January 19, 2015 - Categories: drawing

When drawing without rules or grid lines, you might find your writing skew a little upwards or downwards. I tend to skew upwards, like the way I do in the image below:

2014-11-12 What are the things I want to learn more quickly, and what would that look like?

2014-11-12 What are the things I want to learn more quickly, and what would that look like?

Minimizing skew gives you a more polished sketchnote, and you don’t end up with awkward space at the upper right or bottom right corner. It’s usually better to correct for this while drawing, since rotating images can result in fuzziness or the need to move things around to fit.

Here are some general tips for minimizing skew.

In general, it helps if you write narrower columns of text, since skew becomes more noticeable the longer your lines get. If you write in narrow columns or with short phrases, you can correct for skew by making part of the next line a little larger.

If you want, you can also mix angles so that the variety is an intentional part of your design.

If you draw on small sheets of paper or in notebooks, you can:

  • Rotate the paper so that it’s perpendicular to your usual writing angle. With experience, you’ll get a sense of how much you normally skew and how much you need to rotate what you’re drawing on in order to compensate for that.
  • Look at the edges of the paper as a guide. If you write your first line while looking at the top edge of your paper, you might find it easier to keep that perpendicular to the edge. Then you can use that as the guide for the next line, and so on.
  • Look at everything as a whole. Every so often, take a step back and look at your drawing in progress. This will help you spot skew, imbalance, and other things you can tweak while you’re drawing.
  • Draw with a guide sheet underneath your paper. If your paper is thin enough, you might be able to see lines or grids printed on a sheet slipped underneath what you’re drawing on. If so, you can use it as an invisible guide.
  • Consider using paper with very light grids or lines on it. You can leave the grid or lines as is, or you might be able to remove the grid or lines after scanning.

If you draw on large-scale rolls of paper, you can:

  • Stand up straight and use your body as a guide. With practice, you can get the hang of drawing perpendicularly to your body. Good posture helps. Of course, when you tape up your paper, make sure that it’s parallel to the floor.
  • Look at the top or bottom edge of the paper as a guide. Looking at a straight line while writing can help you write in a straight line too.
  • Step back and look at everything. This is a good time to check for balance, skew, and other things you can fix while drawing.

If you draw on a tablet or on a computer, writing in straight lines is much easier. If your drawing program supports layers, you can use one layer to show a light grid while you draw on another layer. This also helps you keep your sizes consistent even if you’re working zoomed in. Lock your grid layer so that you don’t accidentally draw on it. I use a dot grid when sketching. You can download the template I use, if you want.

Hope that helps you minimize skew in your sketches!

Improving my evil plans for Emacs

January 19, 2015 - Categories: emacs, sharing

Mwahahaha. My evil plans are yielding results, or at least that’s the impression I get because I’m learning so much from people who tell me that they found my blog helpful years ago. Even more recent experiments bear fruit: punchagan checked out Memacs because of my Emacs Chat with Karl Voit, and ended up writing a blog post about using the Emacs profiler.

2015-01-17 My Evil Plans for Emacs are yielding results -- index card #emacs #sharing

2015-01-17 My Evil Plans for Emacs are yielding results – index card #emacs #sharing

This makes me curious: What am I doing right, and how can I do it even better?

Looking at my Emacs posts, it seems I mostly write about figuring things out (and occasionally about cool things I’ve come across). People like the enthusiasm, and they sometimes pick up cool ideas too. The Emacs Hangouts and Emacs Chats are my way of working around my limitations; I don’t particularly like travel and I’m not up to organizing in-person meetups, but virtual meetups let me reach out to more people (and we can record the conversations more easily, too).

What are my goals?

  • I want to get better at using Emacs, because it’s useful and it tickles my brain
  • I want to help more people become intermediate and advanced users of Emacs, because then I get to learn from them (and also Emacs thrives as a community). I can do this by:
    • Showing people the benefits and possibilities of customization
    • Working out loud, showing my thought processes and the tools/libraries I use
    • Helping people develop a good mindset and handy skills
    • Sharing little tips and neat functions

How can I get even better at helping the Emacs community?

2014-04-26 Helping the Emacs community #emacs

2014-04-26 Helping the Emacs community #emacs

I really like the way (or emacs has daily Emacs snippets and Rubikitch describes Emacs packages in Japanese. I think I’ll slowly ramp up from once-a-weekish Emacs posts to maybe twice or three times a week. I have more posts already scheduled, but I just spread them out so that my non-geek readers don’t get overwhelmed.

Guides

Because I’m interested in things that tend to be idiosyncratic (workflows, customizations, etc.), I have a hard time making clear recommendations or putting tips into logical order. That’s probably why I do a lot more “thinking out loud”-type posts instead. I can experiment with identifying who might find a tip useful, extract the tips from my thinking-out-loud explorations, and gradually build up sets of related tips that way.

2015-01-16 Hmm – not guides but explorations – index card #sharing #packaging

I did actually manage to put together one guide (How to Read Lisp and Tweak Emacs) and half of another A Baby Steps Guide to Managing Your Tasks With Org. The sketches for How to Learn Emacs and Tips for Learning Org Mode are high-level guides, too.

Microhabits

I’ve been going back to the basics, working on developing even better Emacs microhabits. I’ve focused on two so far: abbreviating text and switching windows.I think there’s plenty of space to improve even in terms of taking advantage of what’s already out there (with minimal configuration along the lines of setting variables and keyboard shortcuts). And then there are even bigger opportunities to improve through customization and Emacs Lisp.

Helping people directly

I’ve mentioned coaching a few times. Bastien Guerry and a few other folks offer coaching as a service. Me, I’m not particularly familiar with the kinds of issues people run into or are curious about (ex: Mac OS X, programming mode setup). I’m mostly curious about workflow, and I’m happy to talk to people about that. It could be a good source of ideas for blog posts.

2015-01-08 Imagining coaching or guiding others -- index card

2015-01-08 Imagining coaching or guiding others – index card

When I ran my Google Helpouts experiments, I turned many of those tips into blog posts. I think that would be even more effective if people wrote up those tips themselves (it’ll reinforce their learning and it will bring them into the community), so I’ve been playing with the idea of strongly encouraging or even requiring write-ups.

2015-01-15 What if I required people to pay it forward -- #workingoutloud #sharing #teaching

2015-01-15 What if I required people to pay it forward – #workingoutloud #sharing #teaching

Unrealistic, but one can dream. Or one can focus on helping people who are already sharing their questions and ideas in blog posts or discussion forums, so that’s another approach. There’s no shortage of questions, that’s for sure.

Hangouts

I like Emacs Hangouts more than one-on-one coaching. Hangouts are public and recorded automatically, so people can learn from them even if no one has posted notes. It’s shaping up to be a wonderful peer-coaching sort of thing, which is good because I don’t have to be so worried about not being able to help at all. I wonder what this would be like with a bit of a mastermind group structure; maybe we each pick a microhabit or idea to work on for the month (or for two weeks), we help each other out, and then we report back at the next one. That way, there’s casual conversation and discovery, but there’s also purpose and motivation.

2015-01-08 Imagining Emacs hangouts - index card

2015-01-08 Imagining Emacs hangouts – index card

2015-01-16 Emacs community -- index card #emacs

2015-01-16 Emacs community – index card #emacs

Connecting with more parts of the Emacs community

Evil-mode users are a growing part of the Emacs community. Maybe I should try it out to get a better sense of what the experience is like for people who are coming into Emacs via evil-mode. Besides, composability might be an interesting mental tool to add to my toolkit.

2015-01-18 Thinking about evil-mode and Emacs -- index card #emacs

2015-01-18 Thinking about evil-mode and Emacs – index card #emacs

Wrapping up

Maybe I can get better at helping the Emacs community by:

  • Focusing on those micro-habits and sharing what I learn (good for helping intermediate users develop a better appreciation of Emacs)
  • Playing with more workflow improvements and sharing them
  • Writing about how to tinker with popular packages like Org
  • Reaching out through blog comments and Emacs Hangouts to help people learn (in a publicly recorded way)
  • Bringing out what people know through Emacs Hangouts and Emacs Chats (especially if people know cool things but haven’t gotten around to writing about them)

Helping me get better at helping the Emacs community (my selfish reason: so that I learn more from people) can also support your evil plans (your selfish reason: so that you can learn more from me and from other people). Any suggestions? Tell me what I’m doing right and should do more of / better at, or tell me about somewhat adjacent things that are easy to do – low-hanging fruit! =)

Breaking down the skill of outlining

January 20, 2015 - Categories: writing

What do I mean when I say that I want to get better at outlining? What can outlining help me with, anyway?

Outlines are good for:

  • Capturing thoughts quickly: You don’t have to write full sentences. You can add keywords or phrases in any order, and you can flesh them out later.
  • Writing non-linearly: You don’t have to write one paragraph after another. You can jot down your key point, come up with a few supporting points, and then think about your introduction or conclusion.
  • Organizing your thoughts: You don’t need to always go from topic to detail. You can capture random thoughts and then group them afterwards.
  • Deciding on depth and coverage: How much detail should you include? What subtopics do you want to cover, and what will you save for another post? What can you cut, and what’s missing? An outline can help you discover these things before you spend a lot of time writing.
  • Rearranging topics for a more logical flow: Does it make sense to discuss one idea before the other? Fixing the flow in your outline saves you from rewriting all the transitions.
  • Writing quickly: If you’ve mapped out what you want to talk about, you don’t have to worry as much about writer’s block – all you have to do is follow the trail.
  • Picking things up where you left off: If you’re writing something that you can’t finish in one sitting (or if you want to be able to revise it easily even after some time), an outline helps you remember what you want to say and see what you need to do next.

Let me break outlining into sub-skills and think about different ways I can practise each of them.

  1. Outlining a single blog post
  2. Reverse outlining
  3. Outlining link-heavy posts or summary posts
  4. Outlining larger resources and books
  5. Outlining lifelong learning

1. Outlining a single blog post

I tend to write short blog posts focusing on a single question I want to explore or a point I want to make. This results in posts that are usually somewhere between 400 and 2,000 words. Although I’m comfortable with this way of working, I think outlining can help me organize my posts more effectively. Writing in paragraphs sometimes gets in the way of seeing the post as a whole or tweaking its flow easily. If I make an outline and then transform it into text, I find it easier to keep the whole post in mind as I write.

Because I use Org Mode for Emacs to write, it’s easy for me to work with outlines. I can hide and show parts of my outline using keyboard shortcuts. I can also keep a copy of the outline in one part of my window while I rewrite another copy of the outline into the actual text.

In addition to practising by outlining posts like this one, I can double-check the flow of a post while it’s in outline form, and I can also try different permutations of the order.

2. Reverse outlining

To create a reverse outline, start with an existing text. Identify the key points of each paragraph, and create an outline based on that. Organize those points into a more complex structure as needed.

I sometimes use reverse outlines with my own posts or drafts if I get the sense that things are a little out of order, but I can’t pin down why. With Org Mode, I can add list items before each paragraph, summarizing their key points. Then I can manipulate those list items with keyboard shortcuts, hiding the paragraphs or moving them around. When I’m happy, I can remove the outline structure and go back to working with paragraphs.

Reverse outlines are also useful when studying other people’s writing for content or for structure. They help you see the text as a whole instead of getting lost in paragraphs. I don’t do as much of this as I could. If I spent more time reverse-outlining posts that appealed to me, I could probably learn more about techniques for writing.

In addition to practising by creating reverse outlines for my posts and other people’s writing, I might find it useful to tweak Emacs for reverse outlining. I could write a function that automatically structures paragraphs into list items, and another function that extracts the paragraphs from the outline. Hmm…

3. Outlining link-heavy posts or summary posts

This is one step up from posts that deal with a single thought.

It can be challenging to write a blog post that links to lots of other blog posts. I find myself wondering where I want to go into more detail, how to avoid restating so much, how to bridge the different topics, and how to reconcile various types of writing.

I find outlines helpful for thinking about the structure of the post.

  • Should I bring in background information and then focus on a single question, exploring that in the body of the post?
  • Are the links tangential to the post, pointers for further exploration?
  • Am I trying to explain something to someone, and can I use links to let them dive down to the level of detail they want?

Outlines help me keep track of possible ideas to add and how to connect the different topics.

I write many posts that use links for background information or tangents, and the process for these is similar to the one for outlining a single blog post.

I don’t write many summary posts, though, and that’s something that I could practice. To do this well, I could pick more things that people want to learn (such as Emacs and Org) and write high-level overviews that link to more details.

One of the things getting in my way when it comes to working on summary posts, I think, is that it’s easy to pick the immediate benefit of moving myself forward a little, over the long-term benefit of teaching others (whom I could eventually learn from too). I can remind myself that I have plenty of time to write those exploratory posts, and that writing summary posts helps me consolidate, test, and share what I know.

4. Outlining larger resources and books

This is quite a few steps up from writing summary posts. I am not at all good at this yet, and will probably take a few years (at least!) to get the hang of it.

I practised a little this year by:

I tend to focus on writing the parts that are most interesting for me, so outlines sometimes make me feel guilty about the gaps. It turns out that working with existing material or committing to small chunks helps me get around challenges with motivation. I also do much better developing things in the open, getting feedback from people and revising things on the fly.

I’m looking forward to practising with 12-week courses, which make sense as the next small step to take.

5. Outlines for lifelong learning

Outlines can help with more than books and blog posts. I think they can help me learn overall, too. I think they might give me a way to place what I’m learning in context, connect things with other things I’ve learned or that I’m working on learning, capture threads that I’m not planning to investigate at the moment, and let me follow up with those threads when I want to revisit them.

I periodically update my learning plans, but I could give this more attention. Most of my learning notes are in my other Org files: rough notes by date in my journal, blog posts by topic in my index, outlines for things to write about in my sharing outline, and a high-level overview of evil plans.

There’s probably a better way to do this – perhaps incorporating my learning outline into my weekly and monthly review? I haven’t quite figured out how to combine past, present, and future in outlines in a way that makes sense to me while still making it useful to other people, like the way my blog index is useful because it’s not cluttered with other irrelevant points. Hmm.

Next steps

I hadn’t realized it before writing this post, but writing summaries and tiny guides (post-length, not book-length) would be a good in-between step for learning more about outlining before trying to tackle larger projects like books. A 12-week course of short tips might be interesting to do, too.

If you’re curious, you can find the outline for this post at https://gist.github.com/a69de5549d66694b387d . =)

How about you? What are the specific sub-skills you’re working on, and how?

Developing Emacs micro-habits: Abbreviations and templates

January 21, 2015 - Categories: emacs

When it comes to improving how you use Emacs, picking one small change and paying close attention seems to work well. Little things make a lot of difference, especially when frequently repeated over a long period of time. It reminded me of this quote I came across on Irreal:

I’ve gotten the hang of basic multiple-cursors-mode and I’m making gradual progress towards internalizing smart-parens by the simple approach of focusing on one tiny habit at a time. For example, I spent a week reminding myself to use mc/mark-all-like-this-dwim or mc/mark-lines instead of using keyboard macros.

Inspired by the Emacs Advent Calendar, I wanted to start a 52-week series on micro-habits for more effective Emacs use. I brain-dumped an outline of four sets (basic Emacs, Org, programming, meta-habits) of thirteen small tips each. Looking at my list, I realized there were many ideas there that I hadn’t quite gotten the hang of myself. I figured that this might be more of a project for 2016; in the meantime, I could learn by doing.

The first micro-habit I wanted to dig into was that of automating text: abbreviations, templates, and other ways to expand or transform text. I’d used Yasnippet before. I sometimes accidentally expanded keywords instead of indenting lines if my cursor happened to be at the wrong spot. But I hadn’t yet drilled the instinct of automation or the familiarity with templates into my fingers.

This blog post isn’t the easy-to-understand guide to automating text. I’ll write that later, when I’ve figured more things out. In the meantime, I’ll share what I’ve been learning and thinking so far, and maybe you can help me make sense of it.

Emacs has a separate manual for autotyping, which I had never read before. The short manual covers abbrev, skeleton, auto-insert, copyright messages, timestamps, and tempo. Did you know that define-skeleton lets you create a template that accepts multiple interregions if you call your skeleton function with a negative argument? (Interregions? What are those?) It took me an embarrassing amount of time to figure out how to mark interregions and use them. It turns out they have to be contiguous. It might be easier to think of marking the beginning of the region, marking some points in the middle, and then calling the command when your point is at the end – which is probably how most people would interpret the diagrams, but I was trying to mark discontinuous regions because that would be super-cool, and that totally didn’t work. And then I forgot that using helm-M-x means you need to specify numeric arguments after typing M-x instead of before. (I wrote about that very point in one of my blog posts, but it slipped my mind.) Once I got past that, I was delighted to find that it worked as advertised. I still haven’t imagined a situation where I would use it, but it seems like a good sort of thing to know.

What are the practical situations where text automation can help people work more effectively? I looked around to see how other people were using it. Coding, of course – especially if you use Emacs Lisp to transform the text. Debugging, too. Marking up text. Remembering parameters. Wrapping regions. Writing e-mails. Adding blog post metadata. Citing references. Lifehacker has a long list, too.

I came up with several categories I’m going to focus on so that I can more easily recognize opportunities to work better:

2015-01-05 Seeing opportunities for abbreviations and text automation -- index card

2015.01.05 Seeing opportunities for abbreviations and text automation – index card

  • Abbreviations are about typing long words with fewer keystrokes. For example, you might shorten “description” to desc.
  • Phrases are like word abbrevations, but longer. You might want to be able to expand btw to “by the way.”
  • Code benefits from expansion in multiple ways:
    • Automatically inserting characters that are harder to reach on a keyboard, like { and }
    • Being consistent about coding style, like the way many people like adding a comment after the closing brace of an if
    • Transforming text that shows up in multiple places, such as variable names that need getters and setters
    • Filling in the blanks: parameters, comments, etc.
    • Reducing the cognitive load of switching between languages by establishingq a common vocabulary. For example, I sometimes need to look up the syntax of for or the proper way to display a debugging statement when I switch to a language I haven’t used in a while
  • Templates are also useful for consistency in writing, planning, and other areas
  • Text transformation can save time and minimize error.

2015-01-04 Automating text - index card

2015.01.04 Automating text – index card

Translating the examples I’d seen to my personal interests, I could probably find plenty of opportunities to automate text while coding, debugging, writing, planning, or publishing. To dig deeper, I looked at each of the categories in detail.

Abbreviations

2015-01-06 Abbreviations -- index card

2015.01.06 Abbreviations – index card

When I was curious about typing faster, I read forum posts from people who had increased their speed by developing their own form of digital shorthand. The trick works on paper, too. When I need to write quickly or in limited space, I use abbreviations like bc for “because” and w/o for “without.” Why not on the computer as well?

I often take advantage of dynamic abbreviations when I know I’ve recently typed the word I want. To trigger those, I just have to type the beginning of the word and then use dabbrev-expand. I haven’t set up my own static abbreviations, though. Main obstacles:

  • I want to write shorter words instead of longer ones
  • In the beginning, it’s faster to type the word instead of thinking of the abbreviation and expanding it
  • If I have to undo or backspace, that makes me slower
  • If I burn this into my muscle memory, I might be more frustrated on other computers or in other apps (then again, I already customize Emacs extensively, so I guess I’m okay with the tradeoff)

Anyway, here’s a short list I’m trying out with define-global-abbrev and hippie-expand:

hw however
bc because
wo without
prob probably
st sometimes

Hmm. Let’s say that it takes me two keystrokes to trigger the expansion, whether it’s the xx keychord I’ve just set up or the M-/ I’ve replaced with hippie-expand. (Hmm, maybe a double-space keychord is a good candidate for expansion too.) Is the retraining worth a ~50% possible reduction in keystrokes? Probably not.

How about text with punctuation, so I can minimize reaching for symbols?

blog http://sachachua.com/blog/
mail [email protected]

Maybe it’s better to look at the words I frequently misspell, or that I tend to slow down then typing. I’ll keep an eye out for those.

Phrases

2015-01-06 Phrases -- index card

2015.01.06 Phrases – index card

Phrases are an easier sell. Still, I’m trying not to settle into the rut of set phrases. I should cut those mercilessly or avoid writing them from the beginning.

co check out
iti I think I
otoh on the other hand,
mean in the meantime,
fe for example
fi for instance,
oc of course
ip in particular

Code insertion

This is, fortunately, well-trodden ground. The yasnippet package comes with a large collection of snippets for many programming languages. You can start by familiarizing yourself with the pre-defined snippets for the modes that you use. For example, in my installation, they’re under ~/.emacs.d/elpa/yasnippet-20141117.327/snippets. You can use the filename (or keywords defined with key, if specified) as the abbreviation, and you can expand them with yas-expand (which should be bound to TAB if you have yas-global-mode on).

I mostly work with HTML, CSS, Javascript, Ruby on Rails, and Emacs Lisp, so this is the cheat sheet I’ve made for myself:

2015-01-07 Code insertion -- index card

2015.01.07 Code insertion – index card

For HTML, I need to remember that the tags are generally expandable, and that there are a few Lorem Ipsum abbreviations triggered by lorem.1 through .5. CSS has a v abbreviation that sets up a bunch of rules with vendor prefixes. For Javascript, I’ll probably start with f to define a function and log to output something to console.log. Rails has a bunch of iterators like eai that look interesting. As for Emacs Lisp, the pre-defined templates generally add parentheses around common functions so you don’t have to type them, and there are a few shortcuts like bs for buffer-string and cc for condition-case. I think I’ll modify the default snippets to make better use of Yasnippet’s field support, though, so that I don’t have to delete and replace text.

Templates

In addition to using text expansion for code, you can use it for planning and writing other text. I saw Karl Voit use it to great effect in my Emacs Chat with him (around the 44:00 mark), and I’ve been gradually refining some templates of my own.

2015-01-07 Templates -- index card

2015.01.07 Templates – index card

For example, here’s the template I’ve been using for sketched books. Note: If you use Yasnippet for Org Mode properties, you may want to set yas-indent-line to fixed or the fields will get confused.

Gist: sbook

# key: sbook
# name: Sketched Book
# --

**** TOSKETCH ${1:short title}
      :PROPERTIES:
      :TITLE: ${2:long title}
      :SHORT_TITLE: $1
      :AUTHOR: ${3:authors}
      :YEAR: ${4:year}
      :BUY_LINK: ${5:Amazon link}
      :BASENAME: ${6:`(org-read-date nil nil ".")`} Sketched Book - ${2:$(sacha/convert-sketch-title-to-filename yas-text)} - ${3:$(sacha/convert-sketch-title-to-filename yas-text)}
      :ISBN: ${7:ISBN}
      :BLOG_POST: http://sachachua.com/blog
      :END:

$0

***** TODO Sketchnote $1
:PROPERTIES:
:Effort: 2:00
:QUANTIFIED: Drawing
:END:

[[elisp:sacha/prepare-sketchnote-file][Prepare the file]]

***** TODO Write personal reflection for $1
:PROPERTIES:
:Effort: 1:00
:QUANTIFIED: Writing
:END:

[[http://sachachua.com/blog/wp-admin/edit.php?page=cal][View in calendar]]

****** Sketched Book - $2 - $3

$3's /$2/ ($4) ...

I’ve sketched the key points of the book below to make it easier to remember and share. Click on the image for a larger version that you can print if you want.

Haven't read the book yet? You can [[$5][buy it from Amazon]] (affiliate link) or get it from your favourite book sources.

Like this sketch? Check out [[http://sketchedbooks.com][sketchedbooks.com]] for more. Feel free to share – it’s under the Creative Commons Attribution License, like the rest of my blog.

***** TODO Post $1 to blog
:PROPERTIES:
:Effort: 1:00
:QUANTIFIED: Packaging
:END:


***** TODO Update sketched books collection
:PROPERTIES:
:Effort: 1:00
:QUANTIFIED: Packaging
:END:

1. [[elisp:sacha/index-sketched-book][Index sketched book]]
   - [[file:~/Dropbox/Packaging/sketched-books/index.org][Edit index]]
   - [[file:~/Dropbox/Packaging/sketched-books/ebook.org][Edit ebook]]
2. [[elisp:sacha/package-sketched-book][Compile]]
3. Update [[https://gumroad.com/products/pBtS/edit]]

***** TODO Tweet sneak peek of $1 with attached picture

[[elisp:(progn (kill-new (format "Sneak peek: Sketched Book: %s - %s %s" (org-entry-get-with-inheritance "SHORT_TITLE") (org-entry-get-with-inheritance "AUTHOR") (org-entry-get-with-inheritance "BLOG_POST"))) (browse-url "http://twitter.com"))][Copy text and launch Twitter]]

It’s a lot of code and I keep tweaking it as I come across rough corners, but it’s handy to have that all captured in a template that I can easily expand. =)

Text transformation

One of the advantages of tweaking text expansion inside Emacs instead of using a general-purpose text expansion program is that you can mix in some Emacs Lisp to transform the text along the way. I’m still thinking about how to make the most of this, as you can see from this half-filled note-card:

2015-01-07 Text transformation as part of expansion -- index card

2015.01.07 Text transformation as part of expansion – index card

For example, this snippet makes it easier to share source code on my blog while also linking to a Gist copy of the code, in case I revise it or people want to comment on the code snippet itself. It doesn’t use any of the built-in text expansion capabilities, but I think of it as a text expander and transformer because it replaces work I used to do manually. You’ll need the gist package for this one.

Gist: Sacha (updated to clean up region code)

(defun sacha/copy-code-as-org-block-and-gist (beg end)
  (interactive "r")
  (let ((filename (file-name-base))
        (mode (symbol-name major-mode))
        (contents
         (if (use-region-p) (buffer-substring beg end) (buffer-string)))
        (gist (if (use-region-p) (gist-region beg end) (gist-buffer))))
    (kill-new
     (format "\n[[%s][Gist: %s]]\n#+begin_src %s\n%s\n#+end_src\n"
             (oref (oref gist :data) :html-url) filename
             (replace-regexp-in-string "-mode$" "" mode)
             contents))))

Both Yasnippet and Skeleton allow you to use Lisp expressions in your template. If you don’t have all the data yet, you might consider writing another Lisp function that you can call later when you do. For example, in the sketched books code above, I have an Emacs Lisp link that composes a tweet with a link, puts it in the clipboard, and then opens up a web browser. (I do this instead of posting directly because I also want to attach an image to that tweet, and I haven’t figured out how to modify any of the Emacs Twitter clients to do that.)

So that’s what I’ve learned so far about automating text in Emacs. It’ll take me more than a week to get the hang of the abbreviations I’ve just set up, and I’ll probably need to add even more before adding and using abbreviations become true habits. But hey, maybe this will help you pay closer attention to repetitive text and editing actions in Emacs so that you can automate them too, and we can swap notes on useful abbreviations. What kind of text do you expand?

For more information, see:

Move your goalposts to get around an inability to finish projects

January 22, 2015 - Categories: productivity

I hardly ever finish projects. I start them with a burst of enthusiasm, and then I trail off when something else catches my attention. I’ve learned to work with this instead of beating myself up about it. On some days, I might even consider it a good thing. Here’s one of the things I’ve learned:

You can trick your brain by moving the goalposts.

Let’s say that you’re working on a project. Toward the end of the project, you catch yourself losing steam. You’ve gotten 80% of the way there, and the remaining 20% of the work will take four times as much time. The itch to start a different project is pulling you away.

Don’t think of yourself as nearly done. Think of yourself as getting started on another new project that just happens to overlap with the previous one.

 

In fact, mentally set the beginning of that project to include some of the work you’ve just completed, to take advantage of the Endowed Progress effect (research PDF).

moving-the-goalposts

Tada! Goalposts moved. You might find that the newly-reframed project is now novel enough to be included in the list of new projects you enjoy working on, and it might even tempt you away from other distractions.

Moving the goalposts is usually a bad thing. It’s why many people never feel rich, because whenever they reach what used to be unimaginable wealth, they find that the amount of money needed for them to feel happy has gone up. (Solution: don’t anchor happiness to amounts of money.) Moving the goalposts has led to many a logical fallacy in heated arguments. But if you don’t like playing a close-quarters game, moving the goalposts further away can help.

I often use this technique for life-long learning, especially for things that you can’t really declare finished. Can one ever finish learning how to write or draw or program? No, but you can keep moving your targets a little forward as you learn.

You might think, “I won’t be able to celebrate achieving my original goal!” You can still celebrate milestones. Better yet, celebrate even the tiny, tiny steps that you take towards your (constantly-moving) goal. Look behind you once in a while and celebrate the progress you’ve made.

It can be hard to see progress if you don’t have anything tangible. Invest time in looking for useful chunks that you can extract even from work in progress. It’s surprising how few projects are truly all or nothing. If you can share drafts, prototypes, alpha or beta versions, or even blog posts about the journey, you don’t have to worry about the whole thing being a complete waste of time if you get distracted from the project before you finish it. If you always wait until you’ve finished something, you might end up leaving a mess of incomplete projects around.

Worried that your mind will see through this technique and lose interest even earlier in the process? Try being playful about it instead of being too serious. Yes, it’s a mental trick (and not even a particularly complex one), but if your mind likes novelty and beginnings, it can hardly fault you for giving it what it likes.

This technique doesn’t solve everything – I haven’t been able to write a 200-page Emacs book yet, and our couch still doesn’t have a slipcover. But it helps me from time to time, and maybe it will help you too!

Emacs Chat with Steve Purcell

January 23, 2015 - Categories: Emacs Chat, podcast

In this Emacs Chat, Steve Purcell shares how he got started with Emacs by using a Vim emulation mode, what it’s like to give hundreds of package authors feedback on Emacs Lisp style, and how he’s eventually replacing himself with Emacs Lisp (flycheck-package). He also highlights useful packages for managing buffers of version-controlled files (ibuffer-vc), working with lines if the region isn’t active (whole-line-or-region), or maximizing certain buffers (full-frame).

http://youtu.be/Gq0hG_om9xY

Quick video table of contents (times are approximate):

0:04 From Vim to Emacs with Viper
0:11 Packages
0:18 Feedback
0:20 Lisp style
0:21 Flycheck
0:28 Versioning
0:32 Config
0:40 ibuffer-vc
0:41 whole-line-or-region
0:44 full-frame
0:47 Not using Emacs for everything
0:48 Auto-complete, hippie-expand
0:51 Graceful degradation with maybe-require-package
0:57 Making sense

Transcript will follow. In the meantime, you can check out Steve’s config at https://github.com/purcell/emacs.d, follow him on Twitter at @sanityinc, or go to his website at http://sanityinc.com/. You can find other Emacs Chats at http://sachachua.com/emacs-chat .

Got a nifty Emacs workflow or story that you think other people might find useful? I’d love to set up an Emacs Chat episode with you. Please feel free to comment below or e-mail me at [email protected]!

Visualizing the internal citation network of my blog

January 23, 2015 - Categories: visual, wordpress

I’m curious about the internal citation of my blog. Which thoughts have been developed over a long chain of posts? Which posts do I often link to? Where are there big jumps in time? Where have I combined threads?

2014-12-03 Internal citation network

I’ll probably need to build my own data extractor so that it can:

  • ignore weekly and monthly reviews, since I link to everything in those,
  • reconcile short and long permalinks, redirection, and sneak previews,
  • and maybe even index my sketches and look at follow-ups

and I’ll probably want to create something that I could eventually plot as an SVG or imagemap using Graphviz, or maybe analyze using Gephi.

It would be super-interesting to create some kind of output that I could fold into my blog outline or into individual posts. I would need a static dump for that one, I think.

How would I build something like this? One time, I used Ruby to analyze the text of my blog. That might work. I might be able to pull out all the link hrefs, do lookups…

As of Dec 3, 2014, there are 87 posts in 2014 that link to previous posts, out of 259 non-review posts (so roughly 34%). I used this SQL query to get that:

SELECT post_title FROM wp_posts WHERE post_content LIKE ‘%<a href=”http://sachachua.com/blog/20%’ AND post_date >= ‘2014-01-01’ AND post_title NOT LIKE ‘%review:%’ AND post_state=’publish’;

Hmm. I might even be able to do some preliminary explorations with Emacs and text processing instead of writing a script to analyze this, if I focus on 2014 and ignore the special cases (short permalinks, redirection, and sneak previews), just to see what the data looks like. Rough technical notes:

perl -i -p -e s/href/\nhref/gi 2014-manip.html
grep http://sachachua.com/blog/20 2013-manip.html > list-2013
perl -i -p -e "s/(<\/a>(<\/h2>)?).*/$1/gi" list-2013
(defun sacha/misc-clean-up-reviews ()
  (interactive)
  (while (re-search-forward "\\(Monthly\\|Weekly\\) review: .*</h2>" nil t)
    (let ((start (line-beginning-position)))
      (re-search-forward "</h2>")
      (delete-region start (line-beginning-position))
      (goto-char (line-beginning-position)))))

(defun sacha/org-tabulate-links ()
  (interactive)
  (goto-char (point-min))
  (let (main-link edges nodes)
    (while (not (eobp))
      (if (looking-at "^href=\"\\(.*?\\)\".*?</a></h2>")
          ;; Main entry
          (progn
            (setq nodes (cons (match-string 1) nodes))
            (setq main-link (match-string 1)))
        (if (looking-at "^href=\"\\(.*?\\)\"")
            (setq edges (cons (concat 
                               main-link  ;; from
                               "\t"
                               (match-string 1)   ;; to 
                               ) edges))))
      (forward-line 1))
    (kill-new (mapconcat 'identity edges "\n"))))

Ooooh. Pretty. Gephi visualization of the edge list formed by links, using the Yifan Hu layout. That big thread in the middle, that’s the one about taskmasters and choice and productivity, which is indeed the core theme running through this year of the experiment. The cluster on the right is a year in review. We see lots of little links too.

Internal links for entries posted in 2014

Internal links for entries posted in 2014

Now I’m curious about what happens when we add the posts and links from 2013 and 2012, too. I’ve colour-coded this by year, with It ties together posts on sketchnoting, blogging, choice, learning, writing, plans… Neat.

blog-graph

 

What does this say? It says that even though I write about lots of different things, there are connections between the different topics, and the biggest tangle in the middle has more than 320 nodes. I have lots of blog posts that build on an idea for three or four posts, sometimes spanning several years, even if I don’t think about it in advance. There are 90 such clumps, and it might be good to revisit some of these 2- and 3-post chains to see if I can link them up even further.

Also, it could be interesting to do this analysis with tags, not just year. Hmm… Also, I should dust off my data structures and algorithms, and make my own connected-component analyzer so that I can get a list of the clumps of topics. Good ideas to save for another day!

Filling in the occupational blanks

January 24, 2015 - Categories: experiment

Following up on an interview, a journalist asked:

If I were to say that you freelance as [blank] consultant, what would be the word that fills that blank?

2015-01-14 Filling in the occupational blanks -- index card #experiment #occupation

2015-01-14 Filling in the occupational blanks – index card #experiment #occupation

Tricky question. “Freelance” is definitely the wrong word for it, since I doubt I’ll be taking on any more clients and the word obscures my current fascination with a self-directed life. It might make sense to use the word “independent” if we really need to contrast this with stable employment.

Technically, I spend a fraction of my time consulting, and I can define the kind of consulting that I do in a compact phrase. But based on my 2014 numbers, that’s only 12% of my time. This is much less than the 37% of the time I spend sleeping, or even the 18% of the time I spend on discretionary projects or the 15% of the time I spend taking care of myself (not including the 7% of the time I spend on chores, errands, and other things).

Since no one gets introduced as a sleeper even though that’s what we mostly do with our lives, maybe my discretionary projects will yield a neat occupational description for people who need to have that introductory phrase.

  • Am I a writer (3%)? (“Author” is a smidge more self-directed and respectable, maybe, but I still don’t feel like I’ve written Real Books since all my resources are compilations of blog posts). A blogger? This is a category so large, it could mean anything.
  • A sketchnoter (3%)? Alternatively: a sketchnote artist or a doodler, depending on whether I’m making it sound more respectable or more approachable. But the popular understanding of sketchnotes (if there is one) is that of recording other people’s thoughts, and I’m focusing on exploring my own questions.
  • An Emacs geek (2%)? Too obscure; it doesn’t provide useful information for most people. Maybe an open source developer, which also includes the 1% of the time I spend coding – but I do more writing about software than writing actual software or contributing to projects. An open source advocate? But I don’t push it on people or try to change people’s minds.

In the rare meetups I go to, I usually mention a bunch of my interests (drawing, writing, coding, experimenting), and people pick whatever they’re curious about. But most times, I try to preempt the “What do you do?” question with something more interesting for me, like what people are learning about or interested in. It’s so much easier when someone recognizes me from my blog, because then we can jump straight to the interests we have in common.

From time to time, I come across people who persistently ask, “But what do you do? What’s your day job?” I confess it’s a bit fun to tweak the box they want to put me in. One approach I’ve heard other people use is to playfully acknowledge the difficulty of categorization. “On Mondays, I _. On Tuesdays, I _. On Wednesdays, I___. …” Others gleefully embrace descriptions like “I’m unemployed.”

But I’m missing the purpose of that introductory phrase or that short bio here. It’s not about shaking up the other person’s worldview. At its best, that occupational association helps the listener or reader quickly grasp an idea of the other person’s life and where the other person is coming from. An accountant probably has a different way of looking at things than a primary school teacher does. One’s occupation provides the other person with the ability to contextualize what one says (“Oh, of course she thinks of things as systems and processes; she works with code all day.”). During small talk, it gives people easy things to talk about while they’re waiting for a more interesting topic of conversation to appear: “What kinds of things do you write?”

Let’s say, then, that my goals for this phrase would be:

  • to help people understand my context quickly, and how that might differ from their perspective
  • to make the other person more comfortable by:
    • being able to associate me with a stereotype that adds information, possibly fleshing out this mental profile with differences later on
    • in conversation, letting them easily think of questions to ask, addressing the phatic nature of small talk (we’re not actually talking, we’re making polite noises)
  • to branch off into more interesting conversations, avoiding the dead-end that often comes up after the ritualistic exchange of “What do you do?”

Of these goals, I like the third (interesting conversations) the most.

Here are a few of my options:

  • I can accept convention and pick one aspect of what I do, especially if I tailor it to their interests. For example, at a business event, I might introduce myself as a social business consultant who helps really large companies improve internal collaboration through analytics and custom development for enterprise social network platforms (well, isn’t that a mouthful). At visual thinking events, I might introduce myself as a sketchnoter focusing on exploring my own ideas.
  • I can waffle by introducing several aspects, still within the vocabulary of regular occupations: a consultant and a writer, for example.
  • I can say, “It’s complicated!” and explain my 5-year experiment, self-directed living, and learning/coding/writing/drawing/sharing.

Anyway, circling back to this writer and his likely use of some kind of occupation as a way to introduce and contextualize me:

  • It might be interesting to play with no occupational categorization. Some context may be provided by age (31) – it’s common enough in newspapers and books. The editor might send it back with a question, “Yes, but what does she do?”, but there it is.
  • It might also be interesting to play with my difficulty of categorization. “Sacha Chua, who couldn’t come up with a single phrase to describe her occupation, …”
  • Or, since it’s no skin off my back if this is not fully representative, I could just let him write whatever he wants to write. Freelance consultant. Blogger. Sketchnoter. Amateur experimenter. Independent developer. “Consultant” is a very small part of my identity, actually, so developer or blogger might be interesting. A possible missed opportunity here is that the wrong frame might result in people not being able to identify with and learn from stuff (“Of course she can deal with this, she’s a coder”; “Bah, another blogger, is that all she does?”; “Why should I listen to her? Freelance is just a fancy word for unemployed.”). But it’ll do under time pressure. =)

I’m writing this on January 14 and posting this in the future (because I limit posts to one a day), so the article will likely be out by now. If I remember, I’ll update this with what he actually used. =) But I needed to think about it out loud, and I’m sure the situation will come up again in the future. Perhaps by then I’ll have a more compact way to describe myself.

Since other people have figured this out before, I can learn from them. (And possibly from you!) After all, I’m nowhere near as interesting as Benjamin Franklin or Leonardo da Vinci, and somehow they managed to settle down into a sequence of nouns. Here’s the one from Wikipedia’s entry for Leonardo da Vinci:

Leonardo di ser Piero da Vinci (15 April 1452 – 2 May 1519) was an Italian painter, sculptor, architect, musician, mathematician, engineer, inventor, anatomist, geologist, cartographer, botanist, and writer.

Three or four nouns should be a good thing for me to strive for, eh? Even one or two nouns, if I can get to some level of distinction.

As for introductions – people can pick whatever aspect they want. I am multi-faceted and growing. =)

Weekly review: Week ending January 23, 2015

January 25, 2015 - Categories: review, weekly

I posted nine blog posts this week, relaxing that once-a-day bottleneck that I’ve been using for the past few years. Mainly, it’s because I want to talk about Emacs more than once a week while still keeping lots of variety so that I can talk about non-tech topics too. Daily readers: Is the volume unmanageable? How can I make this better for you?

On my consulting gig, I leveled up in terms of using Tableau. I think I’ve gotten the hang of dashboard actions now, and I’m more comfortable using calculated fields for attributes and aggregates. Whee!

This has been a good week for planning ahead and learning from others. The Quantified Self Toronto meetup on Monday got me thinking about an Epic Quest of Awesome, and that spun off a long, thoughtful conversation about questions. I’m looking forward to fleshing that out a bit more over the next few weeks.

Oh, and I finally applied for my passport, picked up my Cultural Access Pass, and took care of a number of other errands. Have day pass, will Get Stuff Done.

The Emacs microhabit I’m going to focus on this week is selecting multiple things in Helm, since that’s one of its key features. =)

Blog posts

  1. Weekly review: Week ending January 16, 2015
  2. Minimizing upward or downward skew in your sketchnotes
  3. Improving my evil plans for Emacs
  4. Breaking down the skill of outlining
  5. Developing Emacs micro-habits: Abbreviations and templates
  6. Move your goalposts to get around an inability to finish projects How redefining your projects can help you satisfy a novelty-seeking brain, and how you can deal with interests or experiments that don’t have clear ends
  7. Emacs Chat with Steve Purcell
  8. Visualizing the internal citation network of my blog
  9. Filling in the occupational blanks

Sketches

  1. 2015.01.17 Evening tweaks – index card #routines
  2. 2015.01.17 My Evil Plans for Emacs are yielding results – index card #emacs #sharing
  3. 2015.01.17 Playing with the index card format – index card #drawing
  4. 2015.01.17 Thoughts from Sketchnote Hangout – colour – index card #color #drawing
  5. 2015.01.17 Weekend routines – index card #life #routines
  6. 2015.01.18 Digging into my thoughts about emptying one’s cup – #emacs #writing
  7. 2015.01.18 Emacs microhabit – Switching windows – index card #emacs #microhabit
  8. 2015.01.18 Journey to Emacs – Beginnings – index card #emacs #beginner
  9. 2015.01.18 Journey to Emacs – stages – index card #emacs
  10. 2015.01.18 Narratives – index card #storytelling #perspective
  11. 2015.01.18 The Sense of Style – index card #book #writing
  12. 2015.01.18 Thinking about evil-mode and Emacs – index card #emacs
  13. 2015.01.19 A good way to track writing revisions – index card #editing #tech
  14. 2015.01.19 Deeper outlines – index card #writing
  15. 2015.01.19 How can I get better at research – index card #learning
  16. 2015.01.19 Imagining an editing experiment – index card #delegation #writing #editing
  17. 2015.01.19 Improving my sharing – index card #writing #sharing
  18. 2015.01.19 Quantified Self Toronto – epic quests, kids, stopwatches, art projects
  19. 2015.01.20 Asking better questions – index card #asking
  20. 2015.01.20 Skill trees – asking questions – index card #skill
  21. 2015.01.20 Skill trees – web – index card #skill #coding
  22. 2015.01.20 Skill trees – writing – index card #skill
  23. 2015.01.20 What do I want from this quest list and skill tree visualization – index card
  24. 2015.01.21 Goal strategies – index card #popular-goals
  25. 2015.01.21 Playing with popular goals – Happiness – index card #popular-goals
  26. 2015.01.21 Popular goals – Fame – index card #popular-goals
  27. 2015.01.21 Popular goals – Health – index card #popular-goals
  28. 2015.01.21 Popular goals – Knowledge or experience – index card #popular-goals
  29. 2015.01.21 Popular goals – Meaning – index card #popular-goals
  30. 2015.01.21 Popular goals – Power – index card #popular-goals
  31. 2015.01.21 Popular goals – Wealth – index card #popular-goals
  32. 2015.01.21 Popular goals – tranquility, equanimity – index card #popular-goals
  33. 2015.01.21 What if I tried on common goals – index card #popular-goals
  34. 2015.01.22 Book – Leading the Life You Want – Friedman 2014 – index card #book
  35. 2015.01.22 Buffet of other goals – index card #goals
  36. 2015.01.22 Goals and skills – index card #goals
  37. 2015.01.22 Imagining a good quest or skill discussion – index card #goals #conversation
  38. 2015.01.22 Thesis projects for 2015 – ideas – index card #sharing #plans
  39. 2015.01.23 Book – Leaving a Trace – Alexandra Johnson – index card #writing #book
  40. 2015.01.23 Passport – mail or pickup – index card #decision
  41. 2015.01.23 Rough notes on goals and questions – for follow up – index card #rough #notes
  42. 2015.01.23 Tech upgrade triggers – index card #decision
  43. 2015.01.23 What would help me enjoy travel – index card

Link round-up

Focus areas and time review

  • Business (40.9h – 24%)
    • Earn (9.3h – 22% of Business)
      • Deposit cheque
      • Earn: E1: 1-2 days of consulting
    • Build (18.2h – 44% of Business)
      • Drawing (7.1h)
      • Delegation (0.0h)
      • Packaging (0.0h)
      • Paperwork (1.8h)
      • Fix cucumber for travis
      • Look into recently uploaded images
    • Connect (13.3h – 32% of Business)
      • Go to Quantified Self Toronto meetup
      • Post Quantified Self notes
      • Check out Sketchnote Hangout
      • Check out #lrnbook
  • Relationships (3.7h – 2%)
    • Call pharmacy
  • Discretionary – Productive (21.0h – 12%)
    • Emacs (5.9h – 3% of all)
      • Have Emacs Chat with Steve Purcell
      • Move my text-scale-increase binding
      • Check out speed-type
      • Figure out how to make pivot tables in Org
      • Figure out how to define abbreviations in Org Mode
      • Revise transcript for Steve Purcell
      • Look at Yasnippet doc TODOs
      • Try out Tern
    • Apply for passport – State “WAITING” from “STARTED” [2015-01-16 Fri 15:51]
    • Redeposit into TFSA
    • Invest in bonds in TFSA
    • Analyze index cards so far
    • Make Epic Quest of Awesome sheet
    • Pick up cultural access pass from Front and Parliament
    • Reflect on asking questions
    • Apply for passport
    • Type in goals
    • Brainstorm ideas for final project
    • Start git directory for drafts
    • Writing (8.1h)
  • Discretionary – Play (6.6h – 3%)
  • Personal routines (22.8h – 13%)
  • Unpaid work (14.7h – 8%)
  • Sleep (58.3h – 34% – average of 8.3 per day)

Sketchnote Hangout: Playing with colour

January 26, 2015 - Categories: drawing

The recent Sketchnote Hangout organized by Makayla Lewis was a good kick in the colour palette.

2015-01-17 Thoughts from Sketchnote Hangout - colour -- index card #color #drawing

 

Before the hangout, I’d settled into a pattern of black-text-with-a-little-accent (although blue ink isn’t much of an accent colour). This, despite an almost embarrassing number of recent attempts to break out of the colouring rut:

Exploring sketchnote colour styles (December 2014)

2014-12-01 Colouring inspiration guide - drawing

2014-12-01 Colouring inspiration guide – drawing

 

Building a habit of drawing with colours (January 2014)

2014-01-02-What-would-it-take-to-make-colour-part-of-my-workflow.png

 

Sketchnote Lesson: Adding color (September 2013)

2014-01-03 Exploring colours

This time! Really! It helps that I’ve added a red pen and a green pen to the ones I carry around in my vest, and that I make myself use them when I use index cards. Digitally, I’m forcing myself to expand my colour vocabulary. Since Adobe Color CC (formerly Kuler) lets you pick a pleasing colour scheme (you can also trust in the gods of randomness or popularity), I’m less likely to have the angry-fruit-salad effect, and I can push myself by using arbitrary colours until I develop a sense of what feels better. Next time I sketch on my computer, if my colour scheme isn’t already set based on a book, I might grab a screenshot and use the eyedropper to pick out colours from that.

Someday I might get back to that sheer primary-colour exuberance of my Nintendo DS sketches. Someday.

In the meantime, you may want to check out other people’s colour experiments:

Emacs kaizen: helm-swoop and editing

January 26, 2015 - Categories: emacs
This entry is part 2 of 4 in the series Emacs Kaizen

Continuing on this quest to focus on one tiny little workflow change at a time, so that I can get even better at using Emacs…

One of those packages I installed but never got around to trying out was all, which lets you interactively edit all lines matching a given regular expression. It’s like an editable occur, sorta.

It turns out that helm-swoop lets you use C-c C-e to edit matching lines interactively (so you can use keyboard macros or replace-regexp or whatever). You can type C-x C-s to save it back to the buffer.

On a related note, I’m still tickled pink every time I use dired-toggle-read-only (C-x C-q) to make a Dired buffer editable so that I can batch-rename filenames.

Writing: Open loops, closed loops, and working with forgetfulness

January 27, 2015 - Categories: blogging, writing

I think I’ve written about something before, but I can’t find it. I have thirteen tabs open with Google search results from my blog. I’ve tried countless keywords and synonyms. I’ve skimmed through posts I only half-remember writing. (Was that blog post really that short? I thought I wrote more details.) I still haven’t found the post I want.

I wonder: Did I really publish it? Or did I just outline or sketch it? Am I confusing it with something similar that I wrote, or someone else’s post that I admired?

Ah, well, time to write it from scratch. It’s a little like writing code. Sometimes it would take so long to find an appropriate open source module that you’re better off just writing the code yourself. Sometimes it would take so long to find an existing post that it’s better to just write it from scratch.

I was looking for that particular post because of a conversation with Flavian de Lima where I mentioned the benefits of blogging while you’re learning something. He resonated with the idea of sharing your notes along the way so that other people can learn from them, even if you’ve moved on to different topics.

Despite having a clear memory of writing about this topic, when I went to the post that I thought was related to it (spiral learning), it didn’t mention blogging at all. “Share while you learn” didn’t quite address it, either. After trying lots of searches, I gave up and started writing a new post. After all, memories are fallible; you could have full confidence in an imagined event.

The reason this came up was because Flavian described how he often took advantage of open loops when working on writing. He would stop with an incomplete thought, put the draft away, and let his subconscious continue working on it. Sometimes it would be days or weeks before he got back to working on the article. He mentioned how other authors might take years to work on novels, dusting off their manuscripts and revising scenes here and there.

Keeping loops open by stopping mid-sentence or mid-task is a useful technique often recommended for writing or programming. Research describes this as the Zeigarnik effect: an interrupted task stays in your memory and motivates you to complete it.

But after reading David Allen’s Getting Things Done, I had become a convert of closed loops: getting tasks, ideas, notes out of your head and into a trusted system so that you don’t have to waste energy trying to remember them. I noticed that if I kept too many loops open, my mind felt buzzy and distracted. To work around this, I got very good at writing things down.

In fact, I took closing loops one step further. Publishing my notes on my blog helped me get rid of the guilt and frustration I used to feel whenever I found myself wanting to move on to a different project. Because my notes were freely available for anyone who was trying to figure out the same thing, I could go ahead and follow the butterflies of my interest to a different topic. My notes could also help me pick things up again if I wanted to.

I didn’t stop mid-sentence or mid-thought, but I published in the middle of learning instead of waiting until I finished. Even my review posts often included next steps and open questions. So I got a little satisfaction from posting each small chunk, but I still left dangling threads for me to follow up on. I closed the loops enough so that the topics didn’t demand my attention.

Writing helped me clear my mind of strong open loops–but it worked a little too well. I tried to close things off quickly, so that I could revisit them when I wanted to. The trick was remembering that they were there. Sometimes I forgot the dangling threads for a year or more. I never followed up on others. Even with my regular review processes, I often forgot what I had written, as in the search that prompted this post.

Writing and memory have an ancient trade-off. Even Socrates had something to say about it, quoting an ancient Egyptian king in Plato’s The Phaedrus:

“…for this discovery of yours will create forgetfulness in the learners’ souls, because they will not use their memories; they will trust to the external written characters and not remember of themselves.”

as quoted in On writing, memory, and forgetting: Socrates and Hemingway take on Zeigarnik

In 2011, Sparrow, Liu, and Wegner showed that people remember less if they think a computer will keep their notes for them, and they tend to remember how to get to the information rather than the information itself. Having written the words, published the posts, and indexed the titles, I’ve forgotten the words; and now I can’t find my way back.

Hence my immediate challenge: sometimes I forget how to get to the information I’ve stored, like a squirrel stashing nuts. (More research: tree squirrels can’t find 74% of the nuts they bury. So I’m doing slightly better than a squirrel, I think.)

Google helps if I can remember a few words from the post, but since it tends to search for exact words, I have to get those words right. Hah, maybe I need to use search engine optimization (SEO) techniques like writing with different keywords – not for marketing, but for my own memory. It reminds me of this SEO joke:

How many SEO copywriters does it take to change a lightbulb, light bulb, light, bulb, lamp, bulbs, flowers, flour…?

My blog index is helpful, but it isn’t enough. I need to write more descriptive titles. Perhaps I should summarize the key point as well. Maps can help, as can other deliberate ways of connecting ideas.

Let me take a step back and look at my goals here. Linking to posts helps me save time explaining ideas, build on previous understanding, and make it easy for people to dig into more detail if they want. But I can also accomplish these goals by linking to other people’s explanations. With so many people writing on the Web, chances are that I’ll find someone who has written about the topic using the words I’m looking for. I can also write a new post from scratch, which has the advantages of being tailored to a specific question and which possibly integrates the forgotten thoughts even without explicit links.

It’s an acceptable trade-off, I think. I’ll continue writing, even with the increased risk of forgetting. If I have to write from scratch even when I think I’ve probably written about the same topic before, I can accept that as practice in writing and thinking.

Other writers have better memories. Flavian told me how he can remember articles he wrote in the 1990s, and I’ve heard similar accounts from others. Me, I’ve been re-reading this year’s blog posts in preparation for my annual review, and I’ve come across ones that pleasantly surprised me. Posts two or three years back are even fuzzier in my memory. I can try to strengthen my memory through exercises and processes. The rest of the time, I can work with the brain that I have. In fact, I’m inclined to build more memory scaffolds around myself, moving more of my memory outside my mind.

[I do not] carry such information in my mind since it is readily available in books. …The value of a college education is not the learning of many facts but the training of the mind to think.

  • Albert Einstein, as Wikiquotes cites from Einstein: His Life and Universe (2007)

And really, how much difference would perfect memory make? I might add more links, include more citations, cover more new ground. I can still learn and share without it.

Forgetful squirrels have their uses. Forgotten acorns grow into oaks for others to enjoy. From time to time, I hear from people who’ve come across old posts through search engines, or I come across old posts in a review. Loops re-open, dangling threads are taken up again, and we continue.

Emacs microhabit: Switching windows with windmove, ace-window, and ace-jump

January 28, 2015 - Categories: emacs

When I work with a large monitor, I often divide my Emacs frame (what most people call a window) into two or more windows (divisions within a frame). I like this more than dealing with multiple Emacs frames, even if I could spread those frames across multiple monitors. I find it easier to manage the windows using keyboard shortcuts than to manage the tiling and display of frames.

One of the Emacs micro-habits I’m working on is getting better at switching between windows. When there are only two windows, C-x o (other-window) works just fine. However, when there are three or more, it can take a few repetitions of C-x o to get to where I want. I could get around that by binding other-window to M-o instead, replacing the default keymap for that. Or I could try to get the hang of other ways to move around.

Here’s an 8-minute video showing windmove, ace-window, and ace-jump:

https://www.youtube.com/watch?v=nKCKuRuvAOw&list=UUlT2UAbC6j7TqOWurVhkuHQ

Windmove lets you move around with cursor keys, if you set up the appropriate keyboard shortcuts. Ace-window works like ace-jump. In addition, you can use C-u to swap windows and C-u C-u to delete windows. Ace-jump works across windows, so that’s handy too.

Here’s my relevant code snippet for Windmove. I changed this to use define-key instead of bind-key.

(defvar sacha/windmove-map (make-sparse-keymap))
(define-key sacha/windmove-map "h" 'windmove-left)
(define-key sacha/windmove-map "t" 'windmove-up)
(define-key sacha/windmove-map "n" 'windmove-down)
(define-key sacha/windmove-map "s" 'windmove-right)
(define-key sacha/windmove-map "[left]" 'windmove-left)
(define-key sacha/windmove-map "[up]" 'windmove-up)
(define-key sacha/windmove-map "[down]" 'windmove-down)
(define-key sacha/windmove-map "[right]" 'windmove-right)
(key-chord-define-global "yy"     sacha/windmove-map)

Here’s the cheat sheet I made for myself:

2015-01-12 Emacs microhabit - window management -- index card #emacs

2015-01-12 Emacs microhabit – window management – index card #emacs

And here’s a simpler reference that you can personalize with your own shortcuts:

2015-01-18 Emacs microhabit - Switching windows -- index card #emacs #microhabit

2015-01-18 Emacs microhabit – Switching windows – index card #emacs #microhabit

Naturally, after recording the video, I thought of a better way to manage my windows. I took advantage of the def-repeat-command that abo-abo posted on (or emacs so that I could repeat keybindings easily. I modified the function to accept nil as the first value if you don’t want the keymap to run a command by default, and to use kbd for the keybinding definitions.

  (defun sacha/def-rep-command (alist)
    "Return a lambda that calls the first function of ALIST.
It sets the transient map to all functions of ALIST,
allowing you to repeat those functions as needed."
    (lexical-let ((keymap (make-sparse-keymap))
                  (func (cdar alist)))
      (mapc (lambda (x)
              (when x
                (define-key keymap (kbd (car x)) (cdr x))))
            alist)
      (lambda (arg)
        (interactive "p")
        (when func
          (funcall func arg))
        (set-transient-map keymap t))))

Here’s my new binding for yy. It lets me bounce on y to use other-window as normal, use the arrow keys to move between windows thanks to windmove, and use ace-window as well: h is the regular ace-window, s swaps, and d deletes.

(key-chord-define-global "yy"   
      (sacha/def-rep-command
       '(nil
         ("<left>" . windmove-left)
         ("<right>" . windmove-right)
         ("<down>" . windmove-down)
         ("<up>" . windmove-up)
         ("y" . other-window)
         ("h" . ace-window)
         ("s" . (lambda () (interactive) (ace-window 4)))
         ("d" . (lambda () (interactive) (ace-window 16)))
         )))

Neat, eh?

Read business books more effectively through application, visualization, or reviews

January 29, 2015 - Categories: learning, reading

This Quora question on “What is the most effective way to read a book and what can one do after reading?” got me thinking about how I read business books and what I do to make the most of them.

2015-01-08 How to use what you read -- index card

2015.01.08 How to use what you read – index card

Application: The best way to get value from a book is to apply it to your life. Reading The Lean Startup is one thing. Using its Build-Measure-Learn loop to run a business experiment is another. Reading Your Money or Your Life is one thing. Calculating your true hourly wage and using that to evaluate your expenses is another. Do the work.

As you apply an idea, you’ll probably want to refer back to the details in the book, so it’s good to keep the book itself handy. Write notes about your questions, ideas, TODOs, experiences, and follow-up questions.

Visualization: Not ready to do the work yet? Slow down and think about it. Imagine the specific situations where you would be able to apply the ideas from the book, and how you would do so. What do you need to learn or do in order to get there? See if you can get closer to being able to act on what you’ve learned.

Spend some time thinking about how the ideas in the book connect to other books you’ve read or ideas you’ve explored. What do they agree with or disagree with? Where do they go into more detail, and where do they summarize? What new areas do they open up?

Think about specific people who might be able to use the ideas in the book. Get in touch with them and recommend the book, explaining why they might find it useful. Imagine what kind of conversation the book might be relevant to so that you’ll find it easier to recognize the situation when it arises. (This is a tip I picked up from Tim Sanders’ Love is the Killer App, which I often recommend when people want to know more about how reading helps with networking.)

Review: Can’t act on the book yet, and can’t think of specific people or ideas to relate it to? Take notes so that you can review them later, and maybe you’ll be able to think of connections then.

I don’t like writing in books. Here’s why:

  • Most of my books come from the library, and I’d never write in those. This lets me get through lots of books without the friction of committing money and space to them.
  • Highlighting is an easy way to make yourself think that you’re going to remember something. Also, it’s hard to decide what’s important the first time through, so you might end up highlighting too much. When everything’s important, nothing is.
  • There’s rarely enough room in the margins for notes, and you can’t review those notes quickly.

2015-01-09 Take notes while you read books -- index card

2015.01.09 Take notes while you read books – index card

I prefer to write my notes on an index card or a piece of paper. If I’m near my computer, I might draw my notes on a tablet or type quotes into a text file. Keeping my notes separate from the book lets me review my notes quickly without thumbing through the book. I want to be able to refer to my notes while reading other books or while writing my reflections. Index cards, pages, and print-outs are easy to physically rearrange, and text files can be searched. Even if I read an e-book, I take my own notes and I copy highlights into my text files.

The best way to remember to review a book is to schedule an action to apply an idea from it. The second-best way is to connect it to other ideas or other people. If you don’t have either of those hooks, you can review on a regular basis – say, after a month, six months, and a year, or by using a spaced repetition system. You might even pull a book out at random and review your notes for inspiration. When you do, see if you can think of new actions or connections, and you’ll get even more out of it. Good luck, and happy reading!

Learning to work on my own things

January 30, 2015 - Categories: experiment

My annual review showed me that despite my resolution to reduce consulting and focus more on my own stuff in 2014, I actually increased the amount of time I spent working on client projects than I did in 2013 (12% vs 9%). Sure, I increased the amount of time I invested in my own productive projects (15% of 2014 compared to 14% in 2013) and the balance is still tilted towards my own projects, but I’d underestimated how much consulting pulls on my brain.

This is the fourth year of my 5-year experiment, and I’m slowly coming to understand the questions I want to ask. In the beginning, I wanted to know:

  • Do I have marketable skills?
  • Can I find clients?
  • Can I build a viable business?
  • Can I get the hang of accounting and paperwork?
  • Can I manage cash flow?
  • Can I work with other people?
  • Can I deal with uncertainty and other aspects of this lifestyle?
  • Can I manage my own time, energy, and opportunity pipeline?

After three years of this experiment, I’m reasonably certain that I can answer all these questions with “Yes.” I’ve reduced the anxiety I used to have around those topics. Now I’m curious about other questions I can explore during the remainder of this experiment (or in a new one).

In particular, this experiment gives me an rare opportunity to explore this question: Can I come up with good ideas and implement them?

I’m fascinated by this question because I can feel the weakening pull of other people’s requests. It’s almost like a space probe approaching escape velocity, and then out to where propulsion meets little resistance and there are many new things to discover.

The most worthwhile thing I’m learning from this experiment, I think, is to sit with myself until the urge to work on other people’s projects passes. Arbitrarily deciding that Tuesdays are no longer consulting days (leaving only Thursdays) seems to work well for me. I find that I can pick things up readily on Thursdays. The rest of the time, I think about my own projects. Mondays and Wednesdays are writing days, Tuesdays are coding days, and Fridays are for administration and wrapping up.

2015-01-05 Developing my imagination and initiative -- index card

Last year, I found it easy and satisfying to work on other people’s requests, and harder to figure out what I wanted to do. It’s like the way it’s easier to take a course than it is to figure things out on your own, but learning on your own helps you figure out things that people can’t teach you.

What’s difficult about figuring out what I want to do and doing it? I think it involves a set of skills I need to develop. As a beginner, I’m not very good, so I feel dissatisfied with my choices and more inclined towards existing projects or requests that appeal to me. This is not bad. It helps me develop other skills, like coding or testing. Choosing existing projects often results in quick rewards instead of an unclear opportunity cost. It’s logical to focus on other people’s work.

One possibility is to build skills on other people’s projects until I run into an idea that refuses to let go of me, which is a practical approach and the story of many people’s businesses. The danger is that I might get too used to working on other people’s projects and never try to come up with something on my own. In the grand scheme of things, this is no big loss for the world (it’ll probably be all the same given a few thousand years), but I’m still curious about the alternatives.

The other approach (which I’m taking with this experiment) is to make myself try things out, learning from the experience and the consequences. If I’m patient with my mediocrity, I might be able to climb up that learning curve. I can figure out how to imagine and make something new – perhaps even something that only I can do, or that might not occur to other people, or that might not have an immediate market. Instead of always following, I might sometimes be an artist or even a leader.

What would the ideal outcome be? I would get to the point where I can confidently combine listening to people and coming up with my own ideas to create things that people want (or maybe didn’t even know they wanted).

How can I tell if I’m succeeding? Well, if people are giving me lots of time and/or money, that’s a great sign. It’s not the only measure. There’s probably something along the lines of self-satisfaction. I might learn something from, say, artists who lived obscure lives. But making stuff that other people find remarkable and useful is probably an indicator that I’m doing all right.

What would getting this wrong be like? Well, it might turn out that the opportunity cost of these experiments is too high. For example, if something happened to W-, our savings are running low, and I haven’t gotten the hang of creating and earning value, then I would probably focus instead on being a really good follower. It’s easy to recognize this situation. I just need to keep an eye on our finances.

It might also turn out that I’m not particularly original, it would take me ages to figure out how to be original in a worthwhile way, and that it would be better for me to focus on contributing to other people’s projects. This is a little harder to distinguish from the situation where I’m still slowly working my way up the learning curve. This reminds me of Seth Godin’s book The Dip, only it’s less about dips and more about plateaus. It also reminds me of Scott H. Young’s post about different kinds of difficulty.

As a counterpoint to the scenario where I find out that I’m not usefully original and that I’m better off mostly working on other people’s things, I hold up:

  • my Emacs geekery, which people appreciate for both its weirdness and their ability to pick out useful ideas from it
  • the occasional mentions in books other people have written, where something I do is used to illustrate an interesting alternative

So I think it is likely that I can come up with good, useful ideas and I can make them happen. Knowing that it’s easy to get dissatisfied with my attempts if I compare them with other things I could be working on, I can simply ignore that discomfort and keep deliberately practising until either I’ve gotten the hang of it or I’ve put in enough effort and must conclude that other things are more worthwhile.

 

If you find yourself considering the same kind of experiment with freedom, deciding between other people’s work and your own projects, here’s what I’m learning:

It’s easy to say yes to other people’s requests, but it might be worthwhile to learn how to come up with your own.

Getting data from Org Mode tables

January 30, 2015 - Categories: emacs, org

Org Mode is an amazingly powerful package for Emacs. I’ve been learning a lot about how to use its support for plain-text tables and spreadsheet calculations.

Using table data in Emacs Lisp with the :var argument

For example, I wanted to be able to define my abbreviations in an Org Mode table in my config. I remembered coming across this technique a few weeks ago, but I couldn’t find the webpage with the code. It turned out to be simple to write from scratch. Here’s the plain text I added to my config.

#+NAME: abbrev
| Base  | Expansion                             |
|-------+---------------------------------------|
| bc    | because                               |
| wo    | without                               |
| wi    | with                                  |
| ex    | For example,                          |
| qm    | [email protected]                   |
| qe    | http://sachachua.com/dotemacs         |
| qw    | http://sachachua.com/                 |
| qb    | http://sachachua.com/blog/            |
| qc    | http://sachachua.com/blog/emacs-chat/ |

#+begin_src emacs-lisp :exports code :var data=abbrev
(mapc (lambda (x) (define-global-abbrev (car x) (cadr x))) data)
#+end_src

The :var data=abbrev argument to the Emacs Lisp source block is where all the magic happens. Here, it takes the data from the table named “abbrev” (which I set using #+NAME: before the table) and makes it available to the code. Emacs evaluates that data when the code is tangled (or exported) to my configuration. The code that’s in my Sacha.el looks like this:

(let ((data (quote (("bc" "because")
                    ("wo" "without")
                    ("wi" "with")
                    ("ex" "For example,")
                    ("email" "[email protected]")
                    ("dote" "http://sachachua.com/dotemacs")
                    ("web" "http://sachachua.com/")
                    ("blog" "http://sachachua.com/blog/")
                    ("ec" "http://sachachua.com/blog/emacs-chat/")))))
  (mapc (lambda (x) (define-global-abbrev (car x) (cadr x))) data) )

Looking up data with org-lookup-first, org-lookup-last, and org-lookup-all

You can do more complex things with Org tables, too. Inspired by Eric Boyd’s talk on his Epic Quest of Awesome (which he based on Steve Kamb‘s), I started putting together my own. I made a list of little achievements, guessed at the years, and assigned arbitrary experience points.

The achievements table had rows like this:

Approximate date Category XP Description ID
2014 Life 50 Became a Canadian citizen – link L_CAN
2014 Programming 20 Used NodeJS and AngularJS for a client project – link P_NOD
2014 Programming 5 Pulled information out of Evernote

I wanted to summarize the points by year: points gained, total points, level (according to a lookup table based on D&D experience points), and description. The lookup table was structured like this:

#+TBLNAME: levels
| Total XP | Level | Adjective             |
|----------+-------+-----------------------|
|        0 |     1 | trained-initiate      |
|     1000 |     2 | experienced           |
|     2250 |     3 | savvy                 |
|     3750 |     4 | veteran               |
|     5500 |     5 | unusually experienced |

Now for the summary table. I created rows for different years, and then I used Org Mode to fill in the rest. (Org Mode! Wow.)

| Year | Points gained | Cumulative points | Level | Adjective        |
|------+---------------+-------------------+-------+------------------|
| 1997 |             0 |                 0 |     1 | trained-initiate |
| 1998 |            10 |                10 |     1 | trained-initiate |
| 1999 |            50 |                60 |     1 | trained-initiate |
| 2000 |            50 |               110 |     1 | trained-initiate |
| 2001 |           100 |               210 |     1 | trained-initiate |
| 2002 |            60 |               270 |     1 | trained-initiate |
| 2003 |           245 |               515 |     1 | trained-initiate |
| 2004 |           115 |               630 |     1 | trained-initiate |
| 2005 |           140 |               770 |     1 | trained-initiate |
| 2006 |            60 |               830 |     1 | trained-initiate |
| 2007 |           270 |              1100 |     2 | experienced      |
| 2008 |           290 |              1390 |     2 | experienced      |
| 2009 |           205 |              1595 |     2 | experienced      |
| 2010 |           215 |              1810 |     2 | experienced      |
| 2011 |           115 |              1925 |     2 | experienced      |
| 2012 |           355 |              2280 |     3 | savvy            |
| 2013 |           290 |              2570 |     3 | savvy            |
| 2014 |           350 |              2920 |     3 | savvy            |
| 2015 |            45 |              2965 |     3 | savvy            |
#+TBLFM: $2='(calc-eval (format "vsum(%s)" (vconcat (org-lookup-all $1 '(remote(accomplishments,@[email protected]>$1)) '(remote(accomplishments,@[email protected]>$3))))))::$3=vsum(@[email protected]+0$2)::$4='(org-lookup-last $3 '(remote(levels,@[email protected]>$1)) '(remote(levels,@[email protected]>$2)) '>=);N::$5='(org-lookup-last $3 '(remote(levels,@[email protected]>$1)) '(remote(levels,@[email protected]>$3)) '>=);L

The TBLFM (table formula) line is very long, so let me break it down.

Points gained:

(calc-eval
 (format "vsum(%s)"
         (vconcat
          (org-lookup-all
           $1
           '(remote(accomplishments,@[email protected]>$1))
           '(remote(accomplishments,@[email protected]>$3))))))

This uses org-lookup-all to look up the value of the first column ($1) in the accomplishments table, from the second row to the last row @[email protected]>, looking in the first column ($1). It returns the values from the third column of the matching rows ($3). This is then passed through calc’s vsum function to calculate the sum.

Cumulative points: vsum(@[email protected]+0$2) is the sum of the second column $2 from the second row @2 to the current row @+0.

Level: This uses org-lookup-last to find the last value where the operator function returns true. In this case, testing the level from column $3 against each of the values in the levels table’s column $1 while the given level is greater than or equal to the value from levels. When it finds the last matching row, it returns the $2 second column from it. ;N means treat everything as a number.

org-lookup-first is like org-lookup-last, but it returns the first matching row.

Adjective: This one works like Level does, but it returns the value from column $3 instead. I found that it converted the return values to 0 if I used ;N, so I used ;L instead.

Passing data to R or other external programs

Of course, you’re not limited to things that Emacs can do. I wanted to summarize the data in graphs, so here’s what I did.

#+RESULTS: category_analysis

#+name: category_analysis
#+begin_src R :var data=accomplishments :exports both :results graphics :file quest_category.png :height 300
library(plyr)
library(ggplot2)
categories <- ddply(data, c("Category"), summarize, Points=sum(XP))
cat_sorted <- transform(categories, Category=reorder(Category, Points))
plot <- ggplot(data = cat_sorted, aes(x = Category, y = Points))
plot <- plot + geom_bar(stat="identity")
plot <- plot + geom_text(aes(label = Points, x = Category, y = Points + 10, hjust=0))
plot <- plot + scale_y_continuous(expand=c(0,70))
plot <- plot + coord_flip()
print(plot)
#+end_src

I like including source code in published pages for fellow geeks, but having the results come first gives people more context for the source block. So I named the source block using the #+name: directive and defined a #+RESULTS: directive before it. The source block used the :var argument to bring the data in from the accomplishments table. With R blocks, the data becomes available as a data frame that you can then do interesting things with. I used the :file argument to save the output to quest_category.png.

Those are a few ways that you can get data out of Org Mode tables and into Emacs Lisp, other Org Mode tables, or external programs. As I learn more about Org Mode, I find myself using it for more of the things that I used to use Microsoft Excel for – tracking, analyzing, and even graphing. I found it a little difficult to piece together what I needed to do from the manuals and examples on the Web, so I hope this explanation will help you (and that it’ll help me when I forget the syntax, as I’m sure I will). If you come up with something really neat that uses Org Mode tables, tell me what you’ve figured out!

Finding a model for my sharing

January 31, 2015 - Categories: experiment

Can a sharing model based on free/pay-what-you-want resources be sustainable over a long period of time?

I’ve been thinking about this for a number of reasons:

  • One of my assistants e-mailed me about my difficulties with delegation. He suggested thinking of my life as a business: What would my objectives be? When I reflected on that, I realized I had some discomfort around the ideas of customers and business models. Was my life more like science and exploration? Not quite, either. I left the thread of thought unresolved.
  • Problogger posted this mind map of different ways to monetize a blog. I realized that I’m not keen on advertising, physical products, selling/flipping blogs, premium content/communities/products, affiliate marketing (except for books I like, and even then those offer tiny commissions and it feels a little hypocritical to do that given that I hardly ever buy books myself), and other indirect methods. I might be okay with coaching, if I can come up with a good workaround for the impostor syndrome.
  • In an interview about Quantified Self and life experiments, a journalist asked me to describe my business. I felt that social business consulting wasn’t the real crux of my current life’s work, and that talking about writing and publishing e-books would be incomplete without exploring why free/pay-what-you-want pricing is important to me. Answering his question prompted me to think about my motivations a bit more.
  • Harold Jarche wrote about the exposure economy and his decision to limit his sharing. I understand where he’s coming from – by mom gives similar lectures to aspiring photographers who have yet to internalize that “exposure” won’t buy them new equipment. But there’s something else that drives me to share more, not less, and I want to understand that.
  • @ljconrad retweeted a link to The Gift of Being Uncommon, which included a segment on “gift reciprocity versus market economy.” It says that people “may have difficulty charging sufficiently for their work, especially if they view their own abilities, products or insights as gifts that need to be shared with others.” I’ve requested Lewis Hyde’s book The Gift: Creativity and the Artist in the Modern World from the library, and I’m looking forward to digging into it further.
  • The contrast of a gift culture versus a market economy reminded me of Eric S. Raymond’s “Homesteading the Noosphere” (2000). I revisited its sections on gift culture, art, and reward. It made me think: Is reputation a major driver for me? How does this work out if my ideal outcome does not involve parlaying that reputation into economic opportunities like jobs or gigs?
  • And that reminded me of Tom Morkes’ guide to pay what you want pricing, and the breadth of people using the PWYW strategy. I’m always delighted to get a note from Gumroad that someone has purchased one of my resources, but I’m still working on getting my anxious side to accept that this is okay.

So that’s my context.

Mulling all those things, I realized that the model I can use to understand my desire to share isn’t business (with its customers, markets, and exchanges of value) or modern science (with its funding from institutions and competition around publications).

It’s philosophy. Ancient philosophy, not professionalized modern philosophy.

What were the “business models” for ancient Greek and Roman philosophers? How did they sustain themselves?

2015-01-10 How did schools of philosophy work in ancient Greece and Rome -- index card #independence #philosophy

2015.01.10 How did schools of philosophy work in ancient Greece and Rome – index card #independence #philosophy

2015-01-10 More about philosophers -- index card #independence

2015.01.10 More about philosophers – index card #independence

  • The Cynics begged in the streets. (I’d rather avoid that option.)
  • People or schools received gifts (from students, from other people in the community, etc.).
  • People or schools had rich patrons.
  • People charged tuition, offered private tutoring, and so on.
  • People worked in unrelated occupations. For example, Cleanthes philosophized during the day and carried water at night.
  • People had private means: estates, investments, and so forth. Seneca had a fortune (acquired through less-palatable means). Atticus inherited wealth and grew it through real estate.

Some philosophers taught in closed schools: Pythagoras kept an exclusive brotherhood. Others taught in public, like Zeno did.

I don’t quite think of what I do as philosophy, but I can learn from how these schools worked. For example, using philosophy as a lens, it makes sense to me to share in public for the following reasons:

  • More people can learn.
  • Ideas stand a greater chance of being remembered and used. (By other people, and by me!)
  • I can grow from the conversation.

This last point is particularly important to me. I’m still figuring things out. I don’t feel that I’m quite at the stage where I can teach people well – when I have clear paths and well-tested lessons. I’m still at the stage where I try to live as well as I can, making and sharing useful things. People’s questions often help me realize something I didn’t know I knew. I’m nowhere close to sharing wisdom suitable for the ages (and might never be).

2015-01-11 Current state and future states -- index card #writing

2015.01.11 Current state and future states – index card #writing

With that learner’s perspective, it doesn’t make sense to me to limit the circle of people I can reach, or to charge people for the privilege of my being able to learn from them. But it does make sense to be open to gifts – of money, sure, but especially of time, skills, experience, and perspective.

2015-01-10 Lessons from ancient Rome -- index card #philosophy

2015.01.10 Lessons from ancient Rome – index card #philosophy

In fact, reflecting on how ancient philosophers managed their ups and downs helped me address more of my anxiety over whether a financial mistake might break this freedom. After all, life back then was way more volatile than life is now. What’s a downturn in the stock market like compared to the whims of emperors and the possibility of exile? I have fewer pressures on my life and more resources than people back then could imagine. (Searchable books! The Internet! Amazing text editors! Boggle.) If I want to learn about interesting things, potential changes in my situation shouldn’t stop me.

So here we are. I don’t know if Kevin Kelly is right about 1,000 True Fans (or John Scalzi about a larger, more modest base). “Fan” isn’t quite what I’m going for, anyway. I want co-adventurers, co-figure-out-ers – ideas bumping into each other in conversations, the back-and-forth of experiments. Maybe a teacher will appear and guide me. Maybe students will help me discover what I can teach. I’ve found some role models to help me understand sharing, and I’m looking forward to seeing if that can still work in the modern world – or better yet, what we can do with it.