October 2014

Brock Health and setting up my own health plan

October 1, 2014 - Categories: business

I still get a kick out of walking into and out of a clinic without paying anything, just providing my Ontario health card at the appropriate moments. Canada’s public health system covers a lot of stuff. Not everything, though! W-‘s extended health plan from work covers a large portion of many expenses, like dental care and massages.

For the expenses that W-‘s health plan doesn’t cover, I looked into setting up a private health services plan (PHSP) so that I can pay for the remainder through my business. After some quick research, I found Brock Health was a popular choice for small corporations in Canada. The way that it works is that you send them the paperwork for the claim, and your corporation pays them the amount of the claim plus an administration fee. They then send you (as the employee or corporation owner) a reimbursement of the expenses without the admin fee. This is tax-free on your personal income, and is paid with before-tax business dollars. So you pay a little more because of the admin fee, but it works out.

I set up an account last fiscal year. Based on my calculations, claiming expenses on our tax forms first made more sense last year, so I didn’t have any transactions. This year, my calculations showed that the PHSP might be a better way to do things. I sent in my first claim with a couple of void cheques in order to It turned out that one of the expenses was partially refunded. I called Brock Health to update the claim, and they updated it before processing the cheques.

I’m looking forward to seeing how it all works out in this year’s business tax return. If it’s as simple as I think it might be, my personal health plan might include more massages… =)

Planning for possibilities

October 2, 2014 - Categories: planning

I like making contingency plans. It’s like peeking up a manifold of possibilities, imagining a sure-footed Sacha capably dealing with whatever comes down the pipe.

In preparation for a recent event, I made a list of different things that could go wrong, highlighting specific scenarios I needed to worry about and listing a few catch-all scenarios as well. Amusingly enough, the actual challenges that came up (Windows updates, network/hardware latency, a network configuration reset, Powerpoint crashes, last-minute changes) weren’t on my list as specific scenarios, but they were addressed by our general back-up plans. I like the blend of specific and general. Specific scenarios help you flush out questions to ask and things to prepare, while general scenarios identify characteristics to prepare for and help you come up with flexible strategies. Both types help you minimize stress when things do happen. Knowing that you have a backup plan, what the trade-offs are, and a probable deadline for committing to that plan helps you worry less about catastrophic failure and lets you focus on coming up with a better ad-hoc option.

One of the things that I gained a better appreciation of was the trade-off between preparing in advance and waiting until you can test your hypotheses. For example, I wasn’t sure if the server would be able to accept incoming connections once at the venue. I could adapt the code to run on my public webserver, but that would take a little time. However, since we were likely to be able to get things to work on the event network, I could postpone worrying about it to Sunday, which meant that I could spend Saturday doing non-work things instead.

Outside work, I also have a lot of scenarios and contingency plans. It’s been interesting slowly moving through time, watching the different uncertainties resolve themselves. Doors close and new possibilities open up. Because I’ve scanned my personal notes and I’ve blogged about many of my projections, I can recall a little bit of what past-Sacha was thinking, standing on the threshold of the unknown. I tend to overestimate risks and costs, but I’m good at coming up with small tests and approaches. I’m good at tracking my progress and keeping an eye out for “trip lines,” little reminders to myself to re-evaluate the situation. I want to get better at generating more general scenarios and alternative approaches, and properly evaluating risk/reward (maybe calibrating these with other people’s experiences). It’s fun treating life as a Choose Your Own Adventure where you might be able to peek ahead a little! =)

Avoiding spoilage with bulk cooking

October 3, 2014 - Categories: cooking, kaizen

We’d been letting some vegetables and cooked food go to waste, so I’ve been tinkering with how we prepare our meals in order to reduce spoilage. Here’s how we now cook in bulk.

During the weekend, we review the past week’s leftovers and freeze them as individual meals. We packaging food in individual lunch-sized containers (~500g, including rice) until the freezer is full or the fridge leftovers are done. I label the containers using painter’s tape and a marker, writing down the initials of the recipe and a number for the month. For example, chicken curry prepared in July is labeled CC7.

I prepare one or two types of dinners. I usually pick bulk recipes based on what’s on sale at the supermarket. If there are unused groceries from the previous week (sometimes I end up not cooking things), I prepare a recipe that can use those up: curry, soup, etc. I start a large pot of rice, too, since I’m likely to use that up when packing individual meals and we go through a lot of rice during the week. We’re more likely to enjoy the variety if it’s spread out over the coming weeks. Freezing the leftovers means we can avoid spoiling food out of procrastination.

After the food is cooked, I put portions into our large glass containers. That way, we have a little room to cook fresh dinners during the week (which W- likes to do), but we also have some backups in case things get busy. We alternate the prepared dinners for variety. For some meals that are inefficient to portion out, I just keep the entire pot in the fridge. If there’s more, I’ll freeze the rest as individual portions. If the freezer is full, I’ll keep the extras in the fridge.

When it comes to the freezer, individual portions are much more convenient than larger portions. You can take one to work and microwave it for lunch. Sometimes I pack larger portions (ex: pizza, pasta sauce), so we need to plan for that when defrosting them. If a dinner portion is thawed in the fridge, it has to get eaten since it can’t be refrozen (unless we re-cook it, which we rarely do).

Our costs tend to be between $1.50 and $3 per portion. For example, the Thai curry I made last time resulted in 20 portions out of $22.39 of groceries. Even if you account for the spices and rice in our pantry, it still comes to a pretty frugal (and yummy!) meal. Sure, there’s labour and electricity, but I enjoy cooking and we schedule it for the lower electricity rates of the weekend. Well worth it for us, and we’re working on getting even better at it.

Aside from reducing spoilage, I’m also working on increasing variety, maybe cooking smaller batches and cooking more often during the week. I’d still like to use the freezer to spread out meals over an even longer period of time so that we can enjoy different tastes. Getting the hang of spices, ingredient combinations, and cooking techniques will help me with variety, too. So much to learn! =)

Weekly review: Week ending October 3, 2014

October 4, 2014 - Categories: review, weekly

We’ve been decluttering and fixing things up at home. It feels great! I swapped out my bedside bookcase for a low table, which I disassembled, varnished, and reassembled. We’re currently varnishing some pine shelves that we’ve routed to be IKEA-compatible. I enjoy helping W- with this sort of stuff, and I’m looking forward to learning more about making boxes and other containers.

Blog posts

Link round-up

Focus areas and time review

  • Business (37.8h – 22%)
    • Earn (31.7h – 83% of Business)
      • Earn: E1: 2.5-3.5 days of consulting
      • Earn: E1: Help with milestone
    • Build (1.7h – 4% of Business)
      • Drawing (0.0h)
      • Delegation (0.0h)
      • Packaging (0.0h)
      • Paperwork (0.0h)
    • Connect (4.5h – 11% of Business)
      • Chat with other QS Toronto organizers
  • Relationships (10.3h – 6%)
    • Connect Ernest with Pulat
    • Get rid of more stuff, clean up spaces
    • Make shelves for cabinet
    • Pick up extra shelf pins from IKEA
    • Varnish bedside table
    • Get more kitchen things
    • Repackage spices in mason jars
    • Start working on kitchen organizer
  • Discretionary – Productive (6.7h – 4%)
    • Emacs (0.0h – 0% of all)
    • Deposit cheque
    • Look into tablet improvements
    • Transfer some more into TFSA
    • Writing (3.9h)
  • Discretionary – Play (13.9h – 8%)
  • Personal routines (19.1h – 11%)
  • Unpaid work (26.2h – 15%)
  • Sleep (54.0h – 32% – average of 7.7 per day)

Reducing my consulting

October 5, 2014 - Categories: business, experiment

I’ve been gradually scaling down my consulting. I started with a plan for consulting 3-4 days a week. Then I shifted to 2-3 days. Now I’m planning to target a regular schedule of one day per week, with extra for when there are important projects. I’ve been helping other team members pick up my skills, so I’m looking forward to seeing what they do with that. I think consulting one day a week will be a good next step in terms of giving me a deeper experience of self-directed time while still building on excellent client relationships.

What would be different if I work one day a week? I think this might be a new tipping point, since I’ll have a larger block of focused time – up to four days, compared to the bursts of single discretionary days of a Tue/Thu schedule. I’ll find out whether I can keep enough context in my head to make the most of spread-apart days, and if the mental leakage is worth it. Alternatively, I might experiment with working two afternoons a week, which still breaks up the week but allows for more responsiveness and momentum.

At the moment, I find it easier and more fun to work on specific people’s ideas and challenges rather than come up with my own solutions for the gaps I see. That said, I’m starting to branch out and make things that I think people will like, and these have turned out to be surprisingly helpful. Still, I’ve got a fair bit more to learn before I can be one of those idea-slinging entrepreneurs.

What do I gain from consulting?

  • The impetus to solve specific problems (learning a lot along the way)
  • The fulfillment of working on larger achievements
  • Taking advantage of other people’s skills without having to do the coordination myself
  • Feedback and ideas from other people
  • Interaction with a good team
  • A bigger safety net (financial and professional)

What other experiment modes do I want to try?

  • Active leisure: learning, writing, drawing, cooking, exercising, etc.
  • Product development: using writing, drawing, and coding to practise creating things outside the time=money equation
  • Open source contribution/maintainership: learning boost from commitments?

I suppose I could toss myself in the deep end and try a 0% schedule earlier rather than later. I’m planning to take a few months to look into this add-on development thing, and that should give me some more information on what I need to learn and whether I can get the hang of it. =)

Much to try…

Level up! Making IKEA-compatible shelves

October 6, 2014 - Categories: life

2014-10-05 Routing shelves

We’ve been decluttering, moving things around and getting rid of things that no longer fit our life. W- decided to reorganize the downstairs cabinets, shuffling the supplies around so that the paper was closer to the printer. It made sense to add another shelf there. The cabinets had been discontinued, and W- couldn’t find shelves matching the dimensions we needed. Time to make our own!

W- picked up a long piece of pine from the hardware store and he cut it into three pieces. We went to IKEA to ask for more shelf pins, which they rustled up after lots of digging. Then we used the router (the woodworking one, not the networking one =) ) to carve out small indentations that would accommodate the pins. While I lined up the existing shelf as a guide, W- adjusted the piece of scrap wood that we were using as a fence and then clamped it into place. He rehearsed the cut, then routed the three boards. We repeated the process for the other indentations. Then we tested the boards – and they fit nicely. Now we’re varnishing them. We probably don’t need to varnish them, but we might as well. =) If we do another set — which we probably will — I’m looking forward to practising routing again.

Making shelves and varnishing them might be pretty small things, but it’s great to be able to do this. I like how W- is helping me learn all these practical skills. I’d love to learn more about building small and medium-sized things around the house: an open box for my cubby at Hacklab, some support for the kitchen shelf, a headboard, maybe even a study table. Someday!

Becoming a better reader

October 7, 2014 - Categories: reading

My particular weakness when it comes to reading is that I can end up skimming lots of books without deeply absorbing new insights or triggering new actions. I get practically all of my books from the library. I check their lists of new acquisitions (updated on the 15th of every month) and request all the titles that look interesting. Having gone through a huge number of books, I find myself less patient with books that don’t teach me something new, or at least say things in a more memorable way.

When do I get the most value from the books I read? How do I shift my reading to more of that?

2014-08-29 Becoming a better reader

2014-08-29 Becoming a better reader

E-books might  expand more of my reading time to the subway, displacing gaming time. If I read by topic instead of getting most things through new releases, then I’ll be reading more intentionally. What am I curious about these days? Skills, mostly, along with the occasional bit of personal finance and small business management. Those topics lend themselves easily to application and experimentation, so then I’ll learn even more from experience. I also enjoy coming across the context of familiar quotes and concepts, so that’s part of the reason why philosophy books are interesting for me.

I’ve got lots of notes that I haven’t turned into blog posts, experiments, and follow-up posts. I like how I’m starting to get a hang of the connections between books. Reviewing will help me connect those dots.

Maybe I should get back to sketchnoting some of the books I read – perhaps my favourites, as a way of sharing really good ideas…

Questionnaires from people

October 8, 2014 - Categories: blogging, writing

As part of blog series or e-book compilations, people sometimes ask me to answer questionnaires they’ve put together. Sometimes they mention the size of their audience. Sometimes, they focus on our shared interests.

On one hand, it’s good that other people are putting together resources, and sometimes these things lead to interesting new conversations. On the other hand, grist for another’s mill, and I generally don’t enjoy reading short, too-standard answers.

So if I’m going to do stuff like that, I want to focus on the things I like. I never promise to write answers, and I don’t commit to a specific date. I mull over the questions and cherrypick the ones I find interesting. Not very generous of me, I suppose, but it keeps me happy. <laugh>

People are usually curious about the past: how one got started, what was helpful, what would you change. I tend to focus more on present and near-future, since that helps me a lot, and I’m not quite ready to hold my life up as an example that other people should be inspired by or follow. It’s good to take notes along the way, though, since it’s hard to reconstruct from memories afterwards.

So I’m okay with describing things and I can see the value of having a gallery of different approaches… What’s the core of this, then? Maybe I’m not keen on the Q-and-short-A format. Might as well be a sketch so that I can practise that. Might as well try to wring out ideas for the future, notes to self – which don’t make as much sense outside the context of my blog, I guess.

Hmm. I think there might be something there. In the context of my blog, it’s clearer that life is a work in progress, and people can come across updates. I can link to things back and forth, and it’s easier for me to keep track of comments.

I like it when people link to or excerpt my blog posts, since most of the time, bloggers make it easy to get back to the context. They put more of themselves into the post, too, sharing what they liked or what they think. It’s different from having a short bio at the end.

Oh! Maybe that’s something else that’s playing into this… I tend to feel meh about most of the guest posts I read, the generic-ish articles with short bios written for link-building and audience-building purposes. We might be a small tribe, but it’s okay for us to grow slowly through remarkable ideas rather than from exposure.

So I’ll still take people’s questions under advisement, but I’ll reflect on those questions on my own schedule and to the extent that I want to, and I’ll share those reflections on my blog. If people want to excerpt/link back, they’re welcome to do so. Let’s try that out…

Leveling up in cooking

October 9, 2014 - Categories: cooking

I made sweet potato and miso soup yesterday, with popped wild rice and Caesar salad on the side. W- made garlic bread with the baguette I bought. It was yummy. The other day, I helped make butternut squash and sweet potato soup at Hacklab, and that was well-received as well. Yay!

Five years ago, before we discovered bulk cooking and bought a chest freezer, W- used to cook every 1-2 days. I didn’t know a lot of dishes that I could confidently cook and he was so much better at cooking than I was, so I was the sous chef. I helped prepare ingredients, make rice, and cook simple recipes. He’d come home early to make dinner, and we packed leftovers for lunch the next day.

Now I cook most of our experimental meals, trying new recipes in the search for future favourites. I also enjoy refilling the chest freezer with time-tested meals like chicken curry and shake-and-bake chicken. Our next goal is to work out a good rotation of known favourites, sprinkling in new recipes here and there.

It feels great to be able to cook–and to take charge of the kitchen, which is an interesting experience. I’m usually trying recipes for the first time, or experimenting with a new variant of a recipe that we’ve had before. I’m never quite sure how it will work out, but since we have backups (hooray for leftovers and low expectations!), it’s okay to stretch and learn. Besides, with all these years ahead of me (probably), the more exploration I do now, the more it will pay off in terms of skills and knowledge.

So probably every Tuesday or so, I’ll be learning a new recipe (helping out at Hacklab). Two or three times a week, I’ll also try a new recipe at home – maybe Wednesday and Sunday, or something like that. I’m also working on rediscovering old favourites and writing them down in the shared Evernote notebook I’ve set up with W-, and maybe transitioning to a grocery/recipe system I’m building for the two of us.

Nice to have a kitchen and the time to cook! =)

Monthly review: September 2014

October 10, 2014 - Categories: monthly, review

I wrote last month that in September, I was planning to:

  • Do more consulting (big milestone!)
  • Help with Hacklab move

It took lots of long days and late nights, but we did a great job on the major project I was working on in September. Woohoo! I got to use AutoHotkey, NodeJS, and AngularJS in interesting ways, and I helped out a different team too.

Hacklab is now at 1266 Queen Street West, and it’s shaping up nicely. I set aside some money to help with kitchen things and with the move. It was good to help with that and to get to know the other folks at Hacklab.

In October, I’m planning to:

  • Help with the last big milestone for my consulting client
  • Turn over all of my responsibilities and document things I’ve learned
  • Cook at the new Hacklab and explore more recipes at home
  • Do my corporate books: this year, I added dividends and HST quick method!

Blog posts

Sketches

Weekly review: Week ending October 10, 2014

October 12, 2014 - Categories: review, weekly

Passed another big milestone at work. Yay! Now in the winding-down phase. How exciting! Next week has a bunch of celebrations (Thanksgiving and work). Also, more kitchen things… =)

Blog posts

Sketches

Link round-up

Focus areas and time review

  • Business (56.7h – 33%)
    • Earn (38.2h – 67% of Business)
      • Earn: E1: Help with milestone
      • E1: Attend celebrations
      • Earn: E1: 2.5-3.5 days of consulting
    • Build (14.1h – 24% of Business)
      • Drawing (6.6h)
      • Delegation (0.0h)
      • Packaging (0.0h)
      • Paperwork (4.8h)
        • Consider upgrading Quickbooks
        • Deduct personal use of phone
        • Do quick method for HST
        • File HST return
        • Finalize accounts
        • Update Paypal amounts and save invoices
        • Update second savings account
    • Connect (4.5h – 7% of Business)
      • Chat with other QS Toronto organizers
  • Relationships (2.2h – 1%)
    • Make shelves for cabinet
    • Pick up extra shelf pins from IKEA
    • Picnicked in High Park, yay
    • Go to Thanksgiving thing
    • Make egg tarts
    • Get more kitchen things
    • Repackage spices in mason jars
  • Discretionary – Productive (3.8h – 2%)
    • Emacs (0.0h – 0% of all)
    • Clear out planters
    • Reducing my consulting
    • Buy parka and raincoat
    • Get passport pictures
    • Start working on kitchen organizer
    • [#C] Tracking: Update the number of tasks
    • Writing (2.1h)
  • Discretionary – Play (10.3h – 6%)
  • Personal routines (21.6h – 12%)
  • Unpaid work (16.5h – 9%)
  • Sleep (56.9h – 33% – average of 8.1 per day)

Improving my response to oopses

October 13, 2014 - Categories: communication

I made a programming mistake recently. At the time we discovered the mistake, we thought it sent lots of e-mails to executives. The team lead and the project manager immediately went into damage-control mode, contacting each of the potentially affected executives and helping them with any workarounds. While they were doing that, I was scrambling to figure out the extent of the problem and any quick fixes I could put in that wouldn’t introduce a lot more risk.

My clients and I are on good enough terms that I don’t have to put on a poker face around them. They’ve heard me giggle over neat things I’ve gotten the system to do, and they’ve heard me try to rapidly braindump possible explanations and approaches. I get quite unintelligible when I’m in the middle of something. My team lead was quick to reassure me that he accepted responsibility for the mistake, that I wouldn’t get into trouble, and that I shouldn’t be stressed. It’s logical. Too much stress, and you end up with negative productivity.

It turned out to be a smaller problem than we thought it was. That was a relief. After we sorted things out, I took a moment to reflect on that spike of stress and uncertainty, and how I could respond to mistakes better next time. I blogged a post-mortem of the mistake on the internal social network, identifying some Swiss-cheese factors that contributed to the error. I also thought about how I could improve my external response to things like this. Sure, I might be getting better at imposing order inside my brain instead of freaking out, but maybe a calm “Yes, this might be serious, but we can figure things out”-type response is better than “I feel worse than you do, and will scramble to fix this.”

2014-09-15 On programming and mistakes

2014-09-15 On programming and mistakes

2014-09-15 Future responses to oopses

2014-09-15 Future responses to oopses

It was good to have reflected on this. A few days later, we were faced with a technical issue that wasn’t my fault, but was still a challenge that we had to solve. I tested my take-charge attitude, and that worked out well. Even though we hadn’t anticipated that specific problem, we had a contingency plan that covered that general case. We stayed calm and worked through it. It was good.

I like this. It’s good to test new responses to challenging situations. Part of growing up, I guess!

Reflecting on my growth as a programmer

October 14, 2014 - Categories: career, development

One of the things I realized from dealing with that programming issue is that I don’t have a mature development workflow for front-end work yet. On previous projects, I focused mostly on back-end development. I had somewhat gotten the hang of test-driven development and code coverage when using Rails before, and I set up an issue tracker for my previous teams. For my main consulting engagement, I shifted to working on mostly HTML, Javascript, and CSS. I’d handled a bit of that before, but we usually worked with designers who did most of the heavy lifting (and the cross-browser fiddliness). Over the past two years,  I picked up more JQuery and Angular, fought with Internet Explorer 7 and then 8, and explored Chrome’s developer tools a bit more.

I didn’t have things quite set up the way I think other people have. I felt mildly guilty about installing programs that were not available from the client’s internal software site, although Emacs was definitely worth the twinge of unease. Even the version control I used was ad-hoc, using Git on my computer to manage snippets for copying and pasting. I still haven’t mastered the Javascript debugger in Google Chrome, much less the tools available for other browsers. (Hence all the grief Internet Explorer gave me.) I didn’t have a test framework set up, so I often committed regression errors and other mistakes. I haven’t yet internalized all the cool development tools in Emacs, like Smartparens and Magit. (I’m slowly getting the hang of multiple-cursors-mode, though!) In terms of workflow maturity, I felt more like someone a few years out of university (or maybe even someone in their final year of classes!), and definitely like someone cobbling things together instead of picking up practices from a well-running team.

My main consulting engagement is coming to a close, but I’m looking forward to learning more about the craft of software development. I have a few personal projects to practise on, and it might be easier to Do The Right Thing when you’re less worried about potentially wasting the client’s time. I’m looking forward to familiarizing myself with more of the nifty features in Emacs. I’m also looking forward to immersing myself in the right ways to do things with popular frameworks, including testing and deployment.

I’d like to become a good programmer someday. What would that be like? For the particular way that I work–a generalist pulling together different things quickly–a good programmer might be one who has a neatly organized library of snippets, and who writes modular code with simple tests that exercise different functionality. Using a debugger, the good programmer would be able to dig into other people’s code, figuring out even things that aren’t documented. That programmer would also be able to quickly prototype and build well-designed interfaces. Things don’t have to win awards, but the interface shouldn’t get in the way. An even better programmer would have the ability to coordinate other programmers, improving people’s results by helping them work on both a tactical and strategic level.

Someday!

2014-09-15 Reflecting on my growth as a programmer

2014-09-15 Reflecting on my growth as a programmer

Tablet thoughts

October 15, 2014 - Categories: geek

I have an Asus Transformer Pad Infinity (TF700T), which I got shortly after its release because I was curious about exploring tablets as a sketchnoting option but I was adamantly opposed to getting an Apple product. I should probably have waited for the reviews to come in, since the TF700T turned out to be a lemon (apparently the processor wasn’t quite up to the task of driving the display) and by the time I sat down and focused on getting past all the excuses and all the potential configuration options for speeding things up, the return window had passed. I suppose I could try to sell it, but it doesn’t seem right to inflict the same problem on someone else.

Anyway, I’ve reflashed it to CROMBi, which the Internet says is supposed to be much better. While I’m waiting for everything to be set up again, I want to think about how a tablet could fit into my life and make things better. That way, I can decide if it’s worth spending the time fixing this up, spending the money to upgrade to a newer tablet, or leaving well enough alone.

What do other people use their tablets for, and what other uses might I want to explore?

  • Business
    • Reading could be handy, especially as a second screen for technical references.
    • Lightweight device for writing in cafes? My laptop isn’t that heavy, but I could give it a try.
    • Browsing? Maybe, if I can get performance up.
    • E-mail? My phone is more convenient.
    • Reviewing my sketches? Maybe, if I can fix the lag issue.
    • Drawing on this tablet? Frustrating because of the lag.
  • Personal
    • Cooking? It might be handy to have large copies of recipes and maybe even a digital shopping list.
    • Browsing? The attentional separation of doing casual browsing on a separate device might be good for training my mind.
    • Learning? Flashcards, perhaps?
    • Watching stuff? I rarely watch movies, and when I do, I watch them on the TV so I can hang out on the sofa with W-.
    • Gaming? That’s popular.
    • Some kind of home console, with weather, calendar, and a shopping list? Maybe, but it seems like overkill.

Ah, tech!

More lessons learned from the recent sprints

October 16, 2014 - Categories: work

Now that we’re (mostly) done with the conference and the major system upgrade, I could relax and go back to my old schedule of working a few days a week. But this consulting contract is winding down soon, so it also makes sense for me to spend the extra time helping team members learn, polishing up prototypes, and braindumping as many notes as I can into the internal social network. The more of my brain I can externalize, the more other people can build on, and the easier it will be to pick it up again even after some delay.

The next week or two won’t have as much of a workload as we had during the conference. On a scale of 1 to 10, with 10 being super-intense (cutting into sleep), I’d say that the conference was probably around 8: I managed to do lots of work and get enough sleep, but I didn’t do much else. These next few weeks will probably be around 5-7. I can still help out with things at home and with Hacklab and I’m totally okay with spending a little time playing video games (W- and I are currently playing Persona 3), but I’m holding off on personal projects until I have more brainspace.

Anyway, for the next time that I need to prepare for intense days (something like 8-10 on that scale), here’s something I drew in mid-September. I’ve updated it with notes on how things actually worked out.

2014-09-15 Preparing for intense days

2014-09-15 Preparing for intense days

  • Avoid long stretches of work. Coding is better when well-rested.
    • This worked out okay. I coded a lot, but I switched between coding different types of things.
  • Go to bed early. Get 8.5-9 hours of sleep; more if you anticipate anxiety.
    • Yup! Managed to get plenty of sleep.
  • Pick one thing. Focus on it.
    • Mostly managed this.
  • Minimal computer or phone use in the evening. Draw instead, as a way of braindumping/thinking. Index cards can be useful for jotting down thoughts.
    • As you can see, I’m still processing the notes from then. =)
  • Minimal socializing – use the time to recharge and prepare the foundation. Spend time with W- taking care of things. Guiltlessly reschedule other things.
    • Worked out well. Substituted money for time when it came to Hacklab.
  • It’s okay to take the subway instead of biking to work – minimize risk
    • I even took a few cabs! Boggle.
  • Still go jogging with W- when weather and schedule permit; if not, do exercise ladder at home.
    • I want to reestablish this habit. Not ingrained yet.
  • Eat freezer meals; get takeout if necessary. (Or frozen lunches from stores as stopgaps? They’re not as nice, though.) Bulk-cook easy recipes (rice & lentils, congee, curry).
    • We ended up ordering pizza a few times. At work, people had food delivered too. It was nice to return to home-cooked meals, though!
  • Keep the end in mind (reason and number of days).
    • That was helpful. =)

I don’t often go on work sprints like that, but it’s nice to know our lifestyle can handle it!

Sometimes – often – I don’t feel like making conversation

October 17, 2014 - Categories: connecting

My default state is quiet. I rarely listen to music while I work, unless I need to make it easier to ignore background conversations. I often find one-on-one conversations awkward. I like group conversations because other people can tell stories or ask questions, and I can dip into or out of the conversation when I want. So Hacklab tends to work for me, since there are occasionally good group conversations there, and people are friends with each other.

2014-10-06 Sometimes - often - I don't feel like making conversation

2014-10-06 Sometimes – often – I don’t feel like making conversation

I started to write a blog post about preparing for winter, something along the lines of being less social because of the activation costs of having to put on coats and take the subway instead of the bike. But I started looking at the numbers from my time tracking (counting both business-related and social non-family connecting time), and I’ve actually been less social in summer. I suppose it makes sense – meetups go on hiatus, people have other plans, and I’m off enjoying quiet time gardening or biking.

2014-10-15 20_25_51-Microsoft Excel - Book2

So maybe this fall and winter will be more social after all. Maybe I’ll make it out to Hacklab once or twice a week, and maybe I’ll start checking out meetups again. It’s good to practice connecting with people in person — although it’s certainly quite tempting to stay home, too. I have the sneaky suspicion that these online conversations might even be more worthwhile and longer-lasting. Still, there’s time to experiment with things, so why not?

Weekly review: Week ending October 17, 2014

October 19, 2014 - Categories: review, weekly

We spent most of this weekend shopping for winter coats. W- and I are both on the smallish side, so it can be difficult to find things in our sizes later in the season. I bought a waterproof 3-in-1 jacket and a compatible down jacket that zips into the outer shell. I’m also experimenting with replacing my belt bag with a vest that has lots and lots of pockets. So far, this is working out well. W- hasn’t been able to find a coat that he’s happy with, though, so the search continues.

It’s also been a week for get-togethers: celebration dinners at work, Thanksgiving and anniversary dinners with family, other get-togethers with friends… The Hacklab launch party is this weekend, and I’m looking forward to helping with that. =)

Oh! And I bumped into a Hacklab member who’s learning R and who had good things to say about the Coursera course, so now I’m trying that. I still have a hard time sitting still for lectures, so instead I focus on taking the quizzes and doing the programming projects.

Lots of learning and connecting!

Blog posts

Focus areas and time review

  • Business (39.4h – 23%)
    • Earn (25.1h – 63% of Business)
      • E1: Attend celebrations
      • Interview potential accountant/bookkeeper
      • E1: Pick up pass
      • E1: Update analytics
      • Earn: E1: 2.5-3.5 days of consulting
    • Build (4.2h – 10% of Business)
      • Drawing (0.9h)
      • Delegation (1.2h)
      • Packaging (0.0h)
      • Paperwork (0.0h)
    • Connect (10.0h – 25% of Business)
      • Plan for office hours
  • Relationships (12.4h – 7%)
    • Attend Jade’s party
    • Get more kitchen things
    • Go to Thanksgiving thing
    • Help look for winter coat
    • Make egg tarts
    • Repackage spices in mason jars
  • Discretionary – Productive (4.4h – 2%)
    • Emacs (0.0h – 0% of all)
    • Buy winter coat
    • Have massage
    • Re-set-up dev environment for Quantified Awesome
    • Get passport pictures
    • Start working on kitchen organizer
    • Writing (2.5h)
  • Discretionary – Play (9.6h – 5%)
  • Personal routines (20.4h – 12%)
  • Unpaid work (23.1h – 13%)
  • Sleep (58.8h – 35% – average of 8.4 per day)

Microsoft Excel: Converting a summary table / crosstab back into data rows

October 20, 2014 - Categories: geek

I recently wanted to transform a summary table of the form:

2014-10-15 20_36_58-Microsoft Excel - Book2

into a table with rows of (activity, date, value) so that I could add columns for year and month and then analyze the data using a pivot table.

It turns out that you can do this with another pivot table, yay! I followed this tutorial to convert my summary columns into data rows using Microsoft Excel 2010.

  1. Press Alt-D, P to get to the secret pivot table wizard that’s different from the one you get from Insert > Pivot table.
  2. Choose Multiple consolidation ranges. Click Next.
  3. Choose I will create the page fields. Click Next.
  4. Select the range and add it. Go through the rest of the wizard to create a pivot table.
  5. Remove the row and column fields.
  6. Double-click on the total.

You should now see a table with the data from your crosstab.

2014-10-15 20_43_25-Microsoft Excel - Book2

Neato! Pivot tables are even cooler than I thought.

Sleep as Android

October 21, 2014 - Categories: android, geek

Following W-‘s example (I’m such a copycat!), I’ve been trying out a few sleep-related applications on my phone. I get more sleep than he does and my schedule is pretty flexible, but I figure that an app might let me swap out the diminishing returns of sleeping in for some extra discretionary time. For a while, I ran Sleep as Android in parallel with SleepBot, and I also tried each of them separately. I used a sturdy, extra-long USB cable to charge my phone, and I slept with my phone under my pillow.

Both apps seem to agree with each other on the motion they detect, and they also appear to do a decent job of distinguishing between my motion and W-‘s motion (we have different-looking graphs). I’m not sure if there’s a significant difference, but I prefer Sleep as Android’s timing, so I bought it after the trial ended.

I also like Sleep as Android’s way of gradually waking me up with short buzzes, gradually leading up to an audio alarm. I like buzzes because they feel more discreet. I don’t have to feel guilty about interrupting W-‘s sleep.  They also don’t lead to overexposure to whatever tones I picked for my alarm. I’d previously used the built-in Medieval Jaunt and songs like Shonen Knife’s Cookie Day, and those still result in an odd tug on my concentration whenever I hear them.

I’m still not keen on morning meetings, but I can make them with less grumbling now!

Reflecting on motives

October 22, 2014 - Categories: purpose

I’ve been thinking about motives and bigger dreams lately. I have a good foundation for experiments, and I probably should be building something bigger on top of it. But I don’t resonate with the entrepreneurial stories of passion and focus. I don’t start with a vision of how the world should be and then work backwards from there in order to make it reality. I don’t dream of dollars or media mentions when starting an experiment. So if those aren’t the things that get me going, what does?

2014-10-21 Exploring my current motives

2014-10-21 Exploring my current motives

A couple of recent decisions are helping me learn more about my motives. Over dinner, one of the Hacklab board members asked me if I would consider helping with bookkeeping, since the current volunteer was struggling with some of the work. After some deliberation, I agreed to help out. I noticed that my reasons for doing so were primarily because I felt Hacklab board had good people in it, and that solid financial information could help us navigate this somewhat precarious period.

On another note, I’m wrapping up the consulting engagement I’ve been working on for the past two and a half years. I said yes to that primarily because the person who asked me had good karma. He had helped me get into and make the most of IBM, so I wanted to help him and his team as well.

These two decisions helped me realize how strongly I’m motivated by helping specific people, versus being motivated by a grand vision, the desire to help a general class of people, or other reasons. I hadn’t realized the extent before, but now that I look closely, I can see how it plays out. I like prototyping because I can quickly build things with lots of feedback from people who will actually be using the tools. I like automation because I can save specific people time and effort. I like helping people with Emacs because of the individual quirks of their workflows.

I do have other motives, too. Sometimes I do things out of curiosity and because they tickle my brain. Tracking data and tweaking Emacs for myself belong to this category. Sometimes I do things because I think they will be useful, like writing and drawing.

I feel like I have small-m motives rather than the big-M Motives you read about in the biographies of people who change the world. I like working on a small, personal scale. Does that mean I should just focus on small dreams, gradually growing them in size? Are these motives something I can tinker with, work around, or transform into even better strengths?

2014-10-22 People who follow similar motivations well

2014-10-22 People who follow similar motivations well

Fortunately, I can look around me for role models living good lives following similar motivations. My parents also seem highly motivated by helping specific people. For example, my dad wanted to help one boy with autism who was interested in photography. That grew into a large initiative called Photography with a Difference. He’s also motivated by curiosity and crazy ideas, like the way he decided to go on a cross-country ultralight flight. My mom was once asked about passion and work. She replied, “John’s passion is photography. My passion is John.” She focused on building an advertising photography business so that my dad could do amazing things behind the camera. W- seems motivated by helping specific people, too, and he also focuses on doing things well. Many of my friends who are into programming are into it because of curiosity and the joy of creation (it helps that it pays the bills, too!). On my best days, I do what I do because I get to help specific people, follow my curiosity, and build resources that might be useful.

So if you can live a good life even with “small-scale” motives like this (compared to, say, the desire to reshape the world), what does that mean for me? How can I make things a little bit better? And–just to play with the idea–what would it be like if I had different motives?

2014-10-21 Reflecting on my primary motives

2014-10-21 Reflecting on my primary motives

I’m not strongly influenced by everyone, but since I do have that desire to help specific people, I can be deliberate about the people I spend time with and include in this consideration. It works out well if helping people out also helps me build skills and resources. It also works out well if I can expand to a group of good people, so I’m not anchored by only one person. For example, having gotten to know the rest of the team during my consulting gig, I feel like they’re also good people I’m happy to help.

I want to balance the people motive, though. This is such a strong pull on my brain, and it’s so tempting to work on other people’s tasks instead of following my own curiosities or developing my own things. I can de-emphasize this by being selective about the tasks I take on, picking the things that are best-aligned to what I want to learn or do anyway. I can also carve off time for self-directed interests, since I’ll probably benefit from training myself to get even better at following curiosity and making things I can build on later.

It would probably be very difficult to swap out my motives, going from concrete to abstract, even if it would theoretically be interesting to do so. Ah well. I’ll start by working with what I have, but it might be interesting to see if I can experiment with being an Alternate Universe Sacha just in case I discover I actually like it.

Anyway, what kinds of things do I want to be able to do with slightly tweaked motives?

2014-10-22 What would I like to be able to do with sustained motivation

2014-10-22 What would I like to be able to do with sustained motivation

I think it would be interesting to play around with Emacs, open source, and other tools, getting the hang of building more resources. It would probably be good to be able to fully enjoy DIY skills (including sewing) and other things that are good for me, like exercise. If I can notice things about these activities that line up with the things that currently motivate me — or tweak my motivations so that I like more of the things that are good for me — maybe that will make this stuff easier to do and easier to stick with.

Hmm…

On “Hell, yeah! or No” and other approaches

October 23, 2014 - Categories: decision, passion

If you find yourself overcommitted, the “Either ‘Hell Yeah!’ or ‘No’” approach suggested by Derek Sivers (among others) might be a good fit. The idea is that if you rate things on a scale of 1 to 10 (with 10 being awesome), ditch the things that are less than 9 instead of wasting your time and energy.

2014-10-22 On Hell Yeah and other approaches

2014-10-22 On Hell Yeah and other approaches

I can see the merits of this approach. Reflecting on it, though, I noticed that I prefer to do things a little differently, and I wanted to dig into the reasons why.

When it comes to requests from other people, I’m pretty good at sticking to the “Heck, yeah!” range. After all, whatever I say no to might be a good fit for someone else, or it could be an opportunity to help someone pick up new skills. Besides, if I make few promises, I have more flexibility when it comes to choosing what to work on at the moment.

For myself, though, I’m okay with working on things that aren’t an immediate “Heck, yeah!” I think it’s because I see a lot of value in the range of things you would rate from 3 to 8 on that 10-point scale, so it can be good to deliberately carve out time to work in that range instead of spending most of your time at 9 or 10.

When I look at the skills and interests that have become big parts of my life, very few of them were instant passions. I’ve always liked reading. I think I fell in love with programming immediately, but I’m not sure because I don’t remember enough about the beginning. On the micro-scale, though, there’s often a little bit of awkwardness and mediocrity when I’m learning something new. I liked personal finance and analytics as soon as I learned about them, but statistics took me longer to wrap my mind around.

Most of the things that enrich my life grew slowly. It took me years and years and years to get to the point of enjoying writing, drawing, or cooking. I didn’t look at W- across a crowded room and feel my world come into focus; I got to know him as a friend before growing to love him. Canada made me sad and homesick before it slowly became a second home. Biking was something limited and a little scary before it became freeing. I’m still working on enjoying exercise and picking up DIY skills.

Sometimes my goals for learning something burn brightly enough to keep me going, but sometimes I start something trusting that it’s good for me and that I might eventually enjoy it more. It can be difficult getting through the plateau of mediocrity, but it might be worthwhile.

I might not often rate deliberate practice and improvement as a 9 or 10 on the excitement scale, either. Sometimes I get impatient or distracted. But it’s good for me too, and it helps me do even better. So I’ll spend time on that, even if I feel a little blah about getting started. Sometimes momentum creates its own energy.

Still, it might be interesting to get more of my activities to that “Heck, yeah!” level of energy, when you’re jazzed up about things and you’re in the flow. It’s fun to have those happy-dance-“I rock! I rock! I rock!” moments. How can I amp up the things that I do, moving them up the scale, now that I understand my motives a little better?

2014-10-22 What kinds of activities do I want to fully enjoy

2014-10-22 What kinds of activities do I want to fully enjoy

  • Coding: If I’m coding on my own, I can encourage more “I rock!” moments by coming up with lots of little ideas for personal projects, investing time into improving my workflow, and practising in other ways.
  • Writing, drawing, packaging: This is tricky, since the “I rock!” moment isn’t as clear as in coding. Maybe if I come up with questions and explore them all the way to the point of packaging a resource…
  • Sewing: If my main challenges are patience and skill, maybe I can start with tiny projects and gradually work my way up, learning how to enjoy the process.
  • Exercise: Even small exercises have their own “I rock!” moments, and I can track my progress to enjoy this more.
  • Learning: Maybe progress tracking, speed, and practical application? Hmm…
  • Talking to people: Can I build up a stronger interest in people’s stories and lessons learned? Also, if I accept silences and the occasional awkward bit as normal, that reduces the downsides of conversations.
  • Committing to stuff: Actually, maybe I’ll continue to minimize this for now. =)  

Coming to terms with online courses

October 24, 2014 - Categories: learning

There are lots of free online courses available on sites like Coursera, but I’ve always had a hard time sticking with them. I don’t like listening to lectures; they feel too slow. Slides and subtitles are inferior to properly-formatted tutorials or books. I sometimes sign up for courses, but then I wander off when I lose interest.

I decided to try online courses again, since one of the other Hacklab members spoke highly of the R course she was taking on Coursera. This time, I tried skipping the lectures, focusing instead on answering the quizzes and doing the programming assignments – essentially, treating it as an open-book exam. That worked out pretty well, actually. I quickly completed all the quizzes, and it took me a few more hours to get the programming assignments sorted out. Many of the programming assignments had self-checking mechanisms, so I didn’t have to wait for peer evaluation.

I like that a lot more than the old way I used to try to get through these online courses. By focusing on the assessments, I can get through the course quickly, identify anything I want to dig deeper into, and try something new with the ability to check my work. Sure, I miss out on testing my ability to retain more information and I might miss out on important points not covered by quiz questions, but at least I’m getting some value out of online courses. I’m sure I’ll get the hang of other ways to study later on!

Weekly review: Week ending October 24, 2014

October 26, 2014 - Categories: review, weekly

Wow! Surprising lot of things done this week. Went to Jade’s party, helped W- go shopping for a coat, baked lots of cupcakes for Hacklab’s relaunch, and dusted off the code for Quantified Awesome. =)

Next week, I’ll be wrapping up my main consulting gig, working on more code, and voting in Canada for the first time. Yay!

Blog posts

Sketches

Link round-up

Focus areas and time review

  • Business (46.6h – 27%)
    • Earn (12.2h – 26% of Business)
      • E1: Attend celebrations
      • E1: Pick up pass
      • E1: Update analytics
      • E1: Wrap up neatly
    • Build (20.7h – 44% of Business)
      • Drawing (2.9h)
      • Delegation (0.0h)
        • Interview potential accountant/bookkeeper
        • Hire accountant and assemble information
      • Packaging (0.0h)
      • Paperwork (0.0h)
    • Connect (13.8h – 29% of Business)
      • Prepare for Hacklab open house
      • Attend QS meetup
  • Relationships (22.4h – 13%)
    • Attend Jade’s party
    • Get more kitchen things
    • Go to Thanksgiving thing
    • Help look for winter coat
    • Make egg tarts
    • Repackage spices in mason jars
  • Discretionary – Productive (1.9h – 1%)
    • Emacs (0.0h – 0% of all)
    • Buy winter coat
    • Complete Swirl assignment for getting and cleaning data
    • Work on Coursera R Programming assignment 2 and 3
    • Have massage
    • Quantified Awesome
      • I can organize items by aisle/category
      • Re-set-up dev environment for Quantified Awesome
      • Start working on kitchen organizer
      • Update to Bootstrap 3
      • Upgrade Rails 3 to Rails 4
      • We can cross items off
      • Fix forms and bootstrap 3
      • Fix token authentication
      • Update to Rails 4.1
    • Bike to work
    • Get passport pictures
    • Vote!
    • Writing (1.8h)
  • Discretionary – Play (7.3h – 4%)
  • Personal routines (15.7h – 9%)
  • Unpaid work (13.6h – 8%)
  • Sleep (60.5h – 36% – average of 8.6 per day)

Upgrading from Rails 3 to Rails 4; thank goodness for Emacs and rspec

October 27, 2014 - Categories: development, emacs, rails

I spent some time working on upgrading Quantified Awesome from Rails 3 to Rails 4. I was so glad that I had invested the time into writing enough RSpec and Cucumber tests to cover all the code, since that flushed out a lot of the differences between versions: deprecated methods, strong parameters, and so on.

rspec-mode was really helpful while testing upgrade-related changes. I quickly got into the habit of using C-c , m (rspec-verify-matching) to run the spec file related to the current file. If I needed to test specific things, I headed over to the spec file and used C-c , s (rspec-verify-single). Because RSpec had also changed a little bit, I needed to change the way rspec-verify-single worked.

(defun sacha/rspec-verify-single ()
  "Runs the specified example at the point of the current buffer."
  (interactive)
  (rspec-run-single-file
   (concat
     (rspec-spec-file-for (buffer-file-name))
     ":"
     (save-restriction
               (widen)
               (number-to-string (line-number-at-pos))))
   (rspec-core-options)))

(sacha/package-install 'rspec-mode)
(use-package rspec-mode
  :config
  (progn
    (setq rspec-command-options "--fail-fast --color")
    (fset 'rspec-verify-single 'sacha/rspec-verify-single)))

C-c , c (rspec-verify-continue) was also a handy function, especially with an .rspec containing the --color --fail-fast options. rspec-verify-continue starts from the current test and runs other tests following it, so you don’t have to re-run the tests that worked until you’re ready for everything.

I should probably get back to setting up Guard so that the tests are automatically re-run whenever I save files, but this is a good start. Also, yay, I’m back to all the tests working!

Test coverage didn’t mean I could avoid all the problems, though. I hadn’t properly frozen the versions in my Gemfile or checked the asset pipeline. When I deployed to my webserver, I ran into problems with incompatible changes between Rails 4.0 and 4.1, and Bootstrap 2 and Bootstrap 3. Whoops! Now I’m trying to figure out how to get formtastic-bootstrap to play nicely with Bootstrap 3 and Rails 4 and the latest Formtastic… There are some git repositories that claim to do this correctly, but they don’t seem to work.

Grr.

Fine, I’ll switch to simple_form, since that seems to be sort of okay with Bootstrap 3. I ended up using this simple_form_bootstrap3 initializer along with

# You can wrap a collection of radio/check boxes in a pre-defined tag, defaulting to none.
config.collection_wrapper_tag = :div

# You can define the class to use on all collection wrappers. Defaulting to none.
config.collection_wrapper_class = 'collection'

and this in my style.css.sass:

.form-horizontal
  .control-group
    @extend .form-group
  .control-label
    @extend .col-sm-2
  .control-group > .form-control, .form-group > .form-control, .form-group > .collection
    @extend .col-sm-10
  .help-block
    @extend .col-sm-offset-2
  .control-label.boolean
    text-align: left
    font-weight: normal
    @extend .col-sm-offset-2
  label.radio
    font-weight: normal

which is totally a hack, but it sort-of-semi-works for now.

More changes to come, since I’ve got to get it sorted out for Rails 4.1 too! Mrph.

Cupcake challenge: accepted!

October 28, 2014 - Categories: cooking

CameraZOOM-20141024194729408

For the Hacklab grand re-opening party, I made 58 vegan chocolate cupcakes using about four batches of this Basic Vegan Chocolate Cupcake. Each batch called for:

  • 1 cup soy milk
  • 1 tsp apple cider vinegar
  • 3/4 cup sugar
  • 1/3 cup canola oil
  • 1.5 tsp vanilla extract
  • 1 cup all-purpose flour
  • 1/3 cup cocoa powder
  • 3/4 tsp baking soda
  • 1/2 tsp baking powder
  • 1/4 tsp salt

mixed and baked in a 350F oven for 18-20 minutes (20 minutes at Hacklab). Once cooled, we decorated them with this Vegan Fluffy Buttercream Frosting, which called for:

  • 1/2 cup vegetable shortening
  • 1/2 cup vegan margarine
  • 3.5 cups icing sugar
  • 1 tsp vanilla extract
  • 1/4 cup soy milk

Fortunately, Eric had donated an electric mixer (hand), so whipping up the frosting was easy. The cupcakes were not too sweet, so the frosting was a nice balance.

I also made 12 non-chocolate, non-vegan, gluten-free cupcakes from a boxed mix, since some Hacklab members have those dietary restrictions. Eric iced those with a different recipe.

It was actually pretty fun making dozens of cupcakes. Because they’re in liners, it’s easy to make large batches of them and set them cooling on whatever surfaces are handy. I started at 4ish and spent the whole afternoon cooking. I also had fun using the simple cake decoration kit to pipe letters and icing on it, although my hands were a smidge shaky. I actually forgot to add the soy milk and extract the first time around, but I caught it after icing the first ten cupcakes with something that was mostly sugar. After I beat in the soy milk, icing was a lot easier.

We don’t really make a lot of desserts at home because we’d like to eat more healthily, but since J-‘s friends are often over, maybe I should look into making more snacks to keep around the house. Probably not chocolate cupcakes – maybe something healthier? – but it’s definitely baking season, so some kind of baked good. Then again, W- reminds me that a box of cookies on sale is pretty cheap, so we might as well use the time for other things.

I don’t quite remember making cupcakes before the party. Maybe I’ve made cupcakes before, but just forgot about it? Anyway, they’re not intimidating after all. =) And with vegan recipes, I can taste the batter a little to see if I’m on the right track!

Hacklab Cooking: Thai curry from scratch, and coconut tapioca pudding too

October 29, 2014 - Categories: cooking

It feels a little odd to post two cooking-related entries in a row, but I wanted to take notes on this (and share it with y’all!). =) Yesterday at Hacklab, Eric, Abtin, and I made Thai curry from scratch, and I made coconut tapioca pudding too. We (mostly) followed this recipe for the Thai curry, tripling the proportions:

Paste (we prepared this in a blender instead of a food processor, and we thinned it with a little coconut milk to make it blendable)

  • 3 Thai chilies
  • 1 stalk lemongrass
  • 3 shallots
  • 1/2 red pepper, deseeded
  • zest of 1 lime
  • stalks from a third of a bunch of coriander
  • thumb-size piece of ginger – we didn’t grate this, we just blended it
  • 2 garlic cloves
  • 1 tsp freshly ground pepper
  • 1 tsp ground coriander

Curry

  • Tofu, marinated in soy sauce, chopped chili, and the juice of 1 lime
  • 400ml coconut milk
  • eggplant
  • zucchini
  • green beans
  • mushrooms
  • half a red pepper, deseeded
  • 1 tsp brown sugar
  • basil

Coconut tapioca pudding

  • Tapioca
  • Coconut milk
  • Sugar
  • Maple syrup

The Fresh.co near Hacklab didn’t carry the kind of tapioca I wanted for the coconut tapioca pudding, so I made do with the minute tapioca that they sell in the instant snacks area (along with Jello and custard powder). I couldn’t figure out how to translate either the coconut tapioca recipe (which specifically tells you to avoid minute tapioca) or the instructions on the back of the tapioca package, so I made something up instead. I used the entire package of minute tapioca, added the remainder of the carton of coconut milk, whisked it to dissolve the tapioca, and cooked it over medium heat (constantly stirring) until the tapioca was no longer crunchy. I added sugar to taste, and I followed the original recipe’s suggestion to top it with maple syrup (… which happened to be the maple syrup that had boiled over during last week’s icing experiment). You’re supposed to let it cool down, but it was yummy while warm anyway. =)

So, more experience points earned and achievements unlocked!

  • First time to make Thai curry from scratch instead of using the canned curry paste
  • First time to cook something with lemongrass
  • First time to make tapioca pudding
  • First time to make up dessert as I went along
  • … First time I’d gone through that much coconut milk

Also, Monday, I made chicken pot pie with a biscuit crust. Technically, I made most of it on Sunday, and then I made a quick biscuit crust after we came back from the polling station (I voted in Canada for the first time, yay!). It was wonderfully chicken-y, not at all like the frozen pot pies you can get at the supermarket. Mmm.

I really like this cooking thing. It’s fun to be able to turn simple ingredients into good tastes, decent food, and shared experiences, even though there’s a lot of figuring things out and adjusting and occasionally making the wrong decisions. =) So far, things have been working out really well.

Emacs hangout notes

October 29, 2014 - Categories: emacs

Prompted by Michael Fogleman’s tweet that he’d like to see a bunch of us Emacs geeks get together in one room for a hackathon, Nic Ferrier and I tried out a casual Emacs hangout. Tinychat didn’t work, but Google Hangouts worked fine. A bunch of people saw our tweets about it too and dropped by, yay! Here are some things we talked about (mostly nifty tweaks from Nic):

  • shadchen is great for pattern matching, especially within trees
  • Alec wanted to know about Emacs and Git, so Nic demonstrated basic Magit
  • after-init-hook – load things there instead of in your ~/.emacs.d/init.el, so that your init.el does not break and you can test things easily from within Emacs
  • I shared isearch-describe-bindings, which had a number of goodies that I hadn’t known about before
  • Recognizing the opportunity to share what you’re working on (ex: nicferrier’s working on an Emacs Lisp to Javascript compiler)

Google Hangouts screensharing worked well for us, giving multiple people the opportunity to share their screen and allowing people to choose what they wanted to focus on. Nic also started up a tmux session and a repository of public keys, but that’s a bit more involved and requires more trust/coordination, so screen-sharing will likely be the way to go unless people have more of a pairing thing set up. This kind of informal hangout might be a good way for people to share what they’re working on just in case other people want to drop by and help out or ask questions (which people can optionally answer, or postpone if they want to stay focused on their work). Something a little more focused than this might be to pick one bug or task and work on it together, maybe starting with a “ridealong” (one person screenshares, thinking out loud as he or she works, and taking the occasional question) and moving towards full pairing (people working on things together). Some of my short-term Emacs goals are:

  • Improve my web development workflow and environment (including getting the hang of Magit, Smart Parens, Skewer, AutoComplete / Company Mode, and other good things)
  • Learn how to write proper tests for Emacs-related things
  • Get back into contributing to the Emacs community, perhaps starting to work on code/tests
  • Look up my Org agenda on my phone, probably with Org Mobile or some kind of batch process

Let’s give this a try. =) I set up a public calendar and added an event on Nov 5, 9-11PM Toronto time. If folks want to drop by, we’ll see how that works out!

Planning for winter – tweaking my layers

October 30, 2014 - Categories: canada, life

It’s getting cooler here in Toronto, with possible snow showers and scattered flurries this weekend. Time to think about how I can make this winter even better!

The Scott Quest Vest is working out really well, allowing me to leave my belt bag behind. I haven’t quite gotten the hang of all the pockets, but I can generally find the most frequent things I use. One of the earphone loops has worked loose and gotten frayed by nearby Velcro, though. I’ll check with the manufacturer, since I haven’t figured out how to securely hand-sew elastic loops like that.

I’ve started wearing my thermals again. With that, the vest, and maybe a sweater, I’m pretty okay with the 5-10C temperatures these days. A rain jacket is handy, too. A hoodie and maybe gloves will take me down to 3C or so.

Here are some notes I put together while thinking about what kind of coat I wanted to get this year:

I ended up deciding on a waterproof jacket with an interchangable lining that’s compatible with a down jacket. I’m still keeping an eye out for a large, warm hat, but I can probably get by with a nice warm scarf and my winter hats. It turns out that I’m somewhat picky about hats, so I haven’t quite found the one I like the most yet.

The new office my clients have moved to is directly connected to the PATH, so my winter exposure during consulting days will just be the 10-20 minute walk to the subway station. I plan to be at Hacklab more often, though, so that will still involve a bit of waiting. The new Hacklab has nicely vivid accent colours, so I’ll probably head over there if I feel colour-deprived.

I probably need to get new winter boots. I noticed last year that my insulated boots were no longer waterproof. The shoe stores don’t seem to have brought in their winter boot selections yet, but I’ll check again in a few months. I tried looking for winter boots at end-of-season sales earlier this year, but since I have small feet and a preference for simple styles, the sizes tend to be sold out quickly. I had the same problem with coats, too, which is why I decided to get a new coat early in the season instead of waiting to see what the rest of the options were.

Compared to last year, I’m even more comfortable with cooking and baking, and I’m looking forward to keeping the house warm and the fridge full.

Bring it on!

Publishing WordPress thumbnail images using Emacs and Org2Blog

October 31, 2014 - Categories: blogging, emacs, org, wordpress

I often include large images in my blog posts since I use sketches as another way to think out loud. I’d gotten used to using the WordPress web interface to drag and drop them into the relevant section of the page. I write most text in Emacs/Org Mode/Org2Blog because of the better outlining and writing tools, and then I used sacha/org-copy-region-as-html (which you can grab from my Emacs configuration) to copy the HTML markup and paste it into WordPress. Of course, I use Emacs for source-code heavy posts that make the most of its syntax formatting support.

Someone asked me recently about how to post and update blog posts with images through Org2blog, and if I had any recommendations for workflow. I’d dropped Windows Live Writer since it was flaking out on me and the WordPress web interface had improved a lot, but before recommending just using WordPress to add images, I was curious about whether I could improve my blogging workflow by digging into Org Mode and Org2Blog further.

It turns out (like it usually does in the Emacs world) that someone had already solved the problem, and I just didn’t have the updated version. Although the upstream version of Org2Blog didn’t yet have the thumbnail code, searching for “org2blog wordpress thumbnail” led me to cpbotha’s Github issue and pull request. Punchagan’s version had some changes that were a little bit ahead of cpbotha’s, so I dusted off my ancient org2blog repository, cloned it onto my computer, and issued the following commands:

git remote add upstream https://github.com/punchagan/org2blog
git pull upstream master
git remote add cpbotha https://github.com/cpbotha/org2blog.git
git pull cpbotha image-thumbnail

and tested it out on a blog post I’d already drafted in Org. It took me a little while to remember that the file URLs didn’t like ~, so I specified a relative path to the image instead. But then it all worked, yay! A quick git push later, and my Github repository was up to date again.

So now I’m back to running a Git version of org2blog instead of the one that I had installed using the built-in packaging system. The way I make it work is that I have this near the beginning of my Emacs configuration:

;; This sets up the load path so that we can override it
(package-initialize nil)
;; Override the packages with the git version of Org and other packages
(add-to-list 'load-path "~/elisp/org-mode/lisp")
(add-to-list 'load-path "~/elisp/org-mode/contrib/lisp")
(add-to-list 'load-path "~/code/org2blog")
(add-to-list 'load-path "~/Dropbox/2014/presentations/org-reveal")
;; Load the rest of the packages
(package-initialize t)
(setq package-enable-at-startup nil)

This allows me to mostly use the packages and to satisfy dependencies, but override some of the load paths as needed.

Hope that helps someone else!