September 2015

Making things around the house

September 3, 2015 - Categories: life

After what felt like a couple of months of brain fog, I’m slowly starting to feel more like myself again.

We finished two major house TODOs: basement tiling and bathtub reglazing. W- spent a long time grinding the uneven basement into some semblance of plane. He wanted to keep the slope for drainage, so self-leveling cement wasn’t a good fit for us. Anyway, once that was sorted out, I helped W- tile the laundry area and bathroom in the basement. Between Youtube and various DIY/contractor forums, we figured out what to do with our floor. It feels really nice and solid now, and we’ve been able to move the laundry machines in. W- also painted and reinstalled the fixtures in the basement bathroom, and we managed to pull everything together a day before the deadline set by our bathtub reglazing appointment. The contractors for that one needed to block off the upstairs bathroom for two days, so it was good that we managed to get the backup bathroom online!

Anyway, it’s been great being able to do laundry at home again. We’d been taking must-wash items to a nearby laundromat, but the rest of the lower-priority things had been piling up. Not only did I go through quite a few loads, I was able to finally pre-wash the fabric I’d bought for some sewing experiments. Once I set up the sewing machine and serger on my desk downstairs, I got to work on converting a thrifted bedsheet into a long drawstring skirt, and on making various small necessities with the cotton flannelette that I’d bought a few weeks ago.

In other news, the recent Emacs Conf was tons of fun. I’ve downloaded the Twitch videos and will start splitting them up into individual presentations. If the on-site organizers figure out a good way to send me the backup videos they took, I’ll splice in some of those shots to help set the stage and compensate for technical difficulties.

We still have a bit more to do downstairs, such as figuring out how to transition between cut-slightly-too-short carpet on an uneven floor and the much more even tile. The carpet’s higher than the tile, and it looks like most carpet-to-tile transitions assume the opposite. The carpet doesn’t seem quite long enough to stretch, either. Ah well. It’s held down by duct tape at the moment, which is classic in its own way.

Once the basement and the bathroom are sorted out, we’ll finally get to clear out the stuff that we’d temporarily moved into the living room. It’ll be nice to let that space breathe again.

I’m also looking forward to organizing my fabric stash and turning some of them into projects. I’d like to pick up some more fabric for projects, too. I still find sewing frustrating from time to time – especially when I try to go faster than I can – but I feel it slowly becoming something enjoyable in its own right. I like exploring the patterns and textures. I love making simple, ordinary things, since that means I get to enjoy a little extra infusion of memory and satisfaction in my everyday life.

In terms of tech, I’m glad I’ve been able to continue consulting throughout this. I find programming easy to do when it’s more like a conversation with other people, figuring out what they want and adapting the tools to them. When I’m fuzzy-brained, it’s difficult to come up with something on my own. I look forward to dusting off my Emacs configuration and exploring the neat ideas I picked up from the conference, though, and writing more blog posts about what I find.

I’m also looking forward to blogging more often, and to moving my weekly review back to the weekends instead of letting it creep to the following Friday. =) I’m sure that as I get back into various interests, I’ll be overflowing with notes to write and share. Someday I might even respond to the e-mails languishing in my inbox.

So that’s what life has been like for the past couple of weeks or so. Onward!

Weekly review: Week ending August 28, 2015

September 4, 2015 - Categories: review, weekly

Hypothesis: Time slept is positively correlated with feelings of accomplishment, instead of being negatively correlated as I might expect. When I think I’ve done a lot, I’m often surprised to find I slept quite a fair bit, too. (Conversely: when I’m surprised by how much the review tells me I’ve done, oddly, I’m usually also surprised by how average my sleep has been.)

Well, this week was a special case: more physical activity than usual, thanks to tiling, and lots of social interaction as well. So yeah, more sleep makes total sense.

Hmm. A fun way to test this hypothesis is to do the sorts of things that make me feel accomplished and awesome, and sleep as I need or want to. It’s not a rigorous test, but it’s hard to see a downside to this plan. =) Maybe they’re not really correlated at all, and it’s just my brain trying to see patterns.

2015-09-03a Week ending 2015-08-28 -- index card #journal #weekly output

Blog posts


Focus areas and time review

  • Business (11.3h – 6%)
    • Earn (9.9h – 87% of Business)
      • Prepare invoice
      • Earn: E1: 1-2 days of consulting
    • Build (1.4h – 12% of Business)
      • Drawing (1.4h)
      • Paperwork (0.0h)
    • Connect (0.0h – 0% of Business)
  • Relationships (19.0h – 11%)
  • Discretionary – Productive (15.3h – 9%)
    • Emacs (4.6h – 2% of all)
    • Writing (0.0h)
  • Discretionary – Play (20.2h – 12%)
  • Personal routines (28.2h – 16%)
  • Unpaid work (5.0h – 2%)
  • Sleep (69.0h – 41% – average of 9.9 per day)

Monthly review: August 2015

September 5, 2015 - Categories: monthly, review

I celebrated my 32nd birthday with a quiet day at home and a leisurely review of the past year. It’s mind-boggling how each little step adds up to something more. I’m glad to have built this habit of daily notes, weekly reviews, monthly summaries, and yearly recaps.

It’s not always about small steps, of course. This month was a big one in terms of house projects. Tiling the laundry and bathroom in the basement took most of our time and energy. W- did all the heavy lifting and grinding, and I helped with whatever I could. It was fun getting the basement in order. While that was going on, we washed our clothes at the laundromat – my first time in at least eight years, I think!

Borderlands 2 has become one of our favourite ways to relax. We finished the second playthrough (True Vault Hunter Mode) and we haven’t bought any of the downloadable content yet, so we’re mostly just practising skills and collecting loot. Borderlands 1 is also in our queue, thanks to J-‘s birthday gift for W-. The interface is a bit different, so it might take us a while to get around to it.

Oh, and the Emacs Conference on August 29 was totally awesome! More about that later, once I sort out the videos. The scheduled talks and the impromptu talks were fantastic. I loved being able to watch and participate in it remotely. I’m looking forward to this becoming a yearly thing.

I’ve been thinking about getting back into sewing. I’ve started researching patterns and picking up fabric so that I can ease my way in with simple projects. So far, so good.

August was still pretty blah with the occasional low point, but now I know that I should carry around earplugs in case I get overstimulated by a noisy environment (if I can’t just simply leave it). The bleahs seem to be retreating, so maybe next month will be even better.

Still, it was a good month. Lots of stuff done, lots of stuff prepared for even more doing, and lots of thoughts and little moments. Let’s see how September turns out!

2015-09-03d August 2015 -- index card #monthly #review output

Blog posts


Category Last month % This month % Avg h per week Delta (h/wk)
Discretionary – Family 2.6 8.7 15 10.2
Discretionary – Productive 3.4 8.6 14 8.7
Sleep 36.9 40.1 67 5.4
Discretionary – Social 0.0 0.0 0 0.0
Business – Connect 1.1 0.4 1 -1.2
Personal 15.6 14.8 25 -1.3
Business – Build 3.9 1.8 3 -3.5
Unpaid work 4.8 2.6 4 -3.7
Business – Earn 9.2 5.2 9 -6.7
Discretionary – Play 22.4 17.8 30 -7.7

Emacs Conf video tech notes:,, livestreamer, ffmpeg

September 6, 2015 - Categories: emacs, geek

Last week’s Emacs Conf was fantastic. There were lots of people at the in-person event in San Francisco, and people could also watch the stream through and ask questions through IRC. There were remote speakers and in-person speakers, and that mix even worked for the impromptu lightning talks sprinkled throughout the day.

This is how the tech worked:

  • Before the conference started, the organizers set up a laptop for streaming on This was hooked up to the main display (a large television with speakers). They also configured the account to record and archive videos. In the free account, recorded videos are available for 14 days.
  • Remote speakers were brought in using the Jitsi open source video conferencing system, using the public servers at This was on the same computer that did the streaming, so people watching the stream could see whatever was shared through Jitsi. Organizers read out questions from the in-person audience and from the IRC channel. The audio from Jitsi wasn’t directly available through, though. Instead, the audio came in as a recording from the laptop’s microphone.
  • Local speakers either used the streaming laptop to go to a specific webpage they wanted to talk about, or joined the Jitsi web conference using Google Chrome or Chromium so that they could share their screen. The organizers muted the second Jitsi client to avoid audio feedback loops.

That worked out really well. There were more than a hundred remote viewers. As one of them, I can definitely rate the experience as surprisingly smooth.

All that’s left now is to figure out how to make a more lasting archive of the Emacs Conf videos. As it turns out, or online tools don’t make it easy to download stream recordings that are longer than three hours. Fortunately, livestreamer can handle the job. Here’s what I did to download the timestream data from one of the recordings of EmacsConf:

livestreamer -o emacsconf-1.ts --hls-segment-threads 4 best
ffmpeg -i emacsconf-1.ts -acodec copy -absf aac_adtstoasc -vcodec copy emacsconf-1.mp4

I normally use Camtasia Studio to edit videos, but for some reason, it kept flaking out on me today. After the umpteenth crash, I decided to keep things simple by using ffmpeg to extract the relevant part of the video. To extract a segment, you can use -ss to specify the start time and t to specify the duration. Here’s a sample command:

ffmpeg -i emacsconf-1.mp4 -ss 1:18:06.11 -t 0:03:32.29 -c:v copy -c:a copy emacsconf-engine-mode.mp4

Your version of ffmpeg might have a -to option, which would let you specify the end time instead of using -t to specify duration.

I’m coordinating with the other organizers to see if there’s a better way to process the videos, so that’s why we haven’t released them publicly yet. (Soon!) It would be nice to improve the audio, especially for some of the talks, and maybe it would be good to add overlays or zoom in as well. The on-site organizers captured backup videos and screen recordings, too, so we might want to edit some of those clips into the streamed recording. One of the organizers has access to better video editing tools, so we’ll try that out.

Anyway, those were the commands that helped me get started with command-line conversion and editing of recorded videos. Hope they come in handy for other people too.

For more info about EmacsConf 2015, check out There’ll probably be an announcement there once the videos are up. =)

Hat tip to Reddit and for tips.

Weekly review: Week ending September 4, 2015

September 7, 2015 - Categories: review, weekly

That was a great week for getting things sorted out around the house. The basement laundry room and bathroom are now in order. Just in time, too, since the upstairs bathroom was out of commission for a few days because of bathtub reglazing. Everything worked out.

Having a washing machine handy again means being able to preshrink fabric and sew them into interesting things, hooray! I did a ton of sewing, and I’m looking forward to doing even more.

Still feeling under the weather. Lots of sleep, a little exercise, and and low expectations (basically, just sewing and a bit of consulting) are keeping me sane.

Also, the Emacs conference was awesome! I think the other organizers are still processing the videos, so they videos aren’t up yet. But soon!

2015-09-12a Week ending 2015-09-04 -- index card #journal #weekly output

Blog posts


Focus areas and time review

  • Business (21.5h – 12%)
    • Earn (13.6h – 63% of Business)
    • Build (4.6h – 21% of Business)
      • Drawing (4.6h)
      • Paperwork (0.0h)
    • Connect (3.3h – 15% of Business)
  • Relationships (17.4h – 10%)
  • Discretionary – Productive (29.3h – 17%)
    • Emacs (17.1h – 10% of all)
    • Sewing (11.0h)
    • Writing (1.2h)
  • Discretionary – Play (5.2h – 3%)
  • Personal routines (27.4h – 16%)
  • Unpaid work (4.1h – 2%)
  • Sleep (63.0h – 37% – average of 9.0 per day)

Weekly review: Week ending September 11, 2015

September 12, 2015 - Categories: review, weekly

More sewing. I’m becoming pretty comfortable with the idea that I can make things that are as good as the things I find in store (at least the basic things that I’ve been eyeing for starters).

We spent some time in Borderlands 2 farming for a specific item called The Bee. It really does change the game, even after the modification.

Lots of walking this week, despite the cooler weather and the return of the major bleahs. Yoga, too, and catching up with friends. Still, slowly, slowly…

2015-09-12b Week ending 2015-09-11 -- index card #journal #weekly


Blog posts


Focus areas and time review

  • Business (14.2h – 8%)
    • Earn (8.2h – 57% of Business)
    • Build (6.0h – 42% of Business)
      • Drawing (6.0h)
      • Paperwork (0.0h)
    • Connect (0.0h – 0% of Business)
  • Relationships (4.8h – 2%)
  • Discretionary – Productive (20.1h – 11%)
    • Emacs (0.0h – 0% of all)
    • Writing (0.0h)
  • Discretionary – Play (11.0h – 6%)
  • Personal routines (40.2h – 23%)
  • Unpaid work (3.4h – 2%)
  • Sleep (74.3h – 44% – average of 10.6 per day)

Weekly review: Week ending September 18, 2015

September 20, 2015 - Categories: review, weekly

Baking season! The days have been a bit cool recently, so I made biscotti and quiche. It feels great to get back into the swing of making food. Can’t let W- have all the fun. =) Still eating small portions, but getting more energy back.

Lots of sewing this week. I followed a tutorial for drafting a simple peasant top, and it turned out wonderfully. For the fabric, I used a cotton bedsheet that I picked up from the thrift store because I liked the colour and the feel of the fabric. I added a phone-sized cat-shaped pocket just because I could. Whee! I think I’ll spend some time writing up notes on the patterns and tutorials I’ve tried out so far, and then use those lessons learned to revise my plans for learning more. I want to modify my basic top pattern to include a front closure. I’ll probably pick up some embroidery floss, too, so I can look into embellishing some things for gifts.

Extra consulting on Tuesday. It was nice to spend some time improving prototypes and getting things ready for the next phase.

Oh, and lots of paperwork for the business! The end of my fiscal year is coming up, so I crunched the numbers to see whether it makes sense to file my health expenses through the business (I set up a PHSP for that) or keep them for my tax return. The PHSP won this year, so I assembled all my paperwork, cross-referenced and double-checked all my claims, and sent the package off. It’s nice to be comfortable with this kind of number-crunching. I’ll be doing my own corporate tax return, too. It should be pretty similar to last year’s tax return. The Canada Revenue Agency’s actually quite nice to talk to whenever I need clarification.

I reached another personal milestone and now my mornings are now slightly more pleasant. Hooray!

Next week: More sewing, more long walks, more everything. =)

2015-09-20e Week ending 2015-09-18 -- index card #journal #weekly


Blog posts


Focus areas and time review

  • Business (15.4h – 9%)
    • Earn (12.7h – 82% of Business)
    • Build (2.7h – 17% of Business)
      • Drawing (0.7h)
      • Paperwork (2.0h)
        • Comparison-shop for TurboTax
        • Check health expenses tradeoff for FY2014-2015
        • Buy TurboTax Business Incorporated
        • Round up the receipts for the PHSP
    • Connect (0.0h – 0% of Business)
  • Relationships (3.4h – 2%)
  • Discretionary – Productive (13.1h – 7%)
    • Emacs (0.0h – 0% of all)
      • Process Emacsconf videos
    • Sewing (13.1h)
    • Writing (0.0h)
  • Discretionary – Play (21.6h – 12%)
  • Personal routines (27.8h – 16%)
  • Unpaid work (13.8h – 8%)
  • Sleep (72.8h – 43% – average of 10.4 per day)

Update on Emacs Conf 2015 videos; Org Mode tables and time calculations

September 25, 2015 - Categories: emacs, geek, org

I spent the day cutting up the rest of the videos from the Emacs Conference 2015 stream into individual talks. I’d already cut the set of talks before lunch, but there were quite a few more after. As it turned out, keeping the video data in .ts format instead of converting it to .mp4 is actually better for Youtube processing.

Since Camtasia Studio and Movie Maker were both having problems with the large videos, I used VLC to play the video and find the timestamps at which I needed to cut the segments. I made an Org Mode table with the start and end times, and then I used the ;T flag in a table function to get the duration. A little bit of Emacs Lisp code later, and I had my ffmpeg commands. Here’s the source from my Org file:

#+NAME: emacsconf-c.ts
| Notes                                            |      Start |        End | Duration |
| Emacs configuration                              | 4:02:25.37 | 4:27:09.30 | 00:24:44 |
| Hearing from Emacs Beginners                     |    4:27:27 |    5:01:00 | 00:33:33 |
| Lightning talk: Emacs Club                       | 5:03:19.30 | 5:19:37.83 | 00:16:18 |
| Starting an Emacs Meetup - Harry Schwartz part 1 | 5:31:52.03 |    6:01:20 | 00:29:28 |
#+TBLFM: $4=$3-$2;T

#+NAME: emacsconf-a.ts
| Notes                                                    |   Start |     End | Duration |
| Starting an Emacs Meetup - Harry Schwartz part 2         |  0:0:00 | 0:20:04 | 00:20:04 |
| Literate Devops - Howard Abrams                          | 1:28:20 | 2:08:15 | 00:39:55 |
| Lightning talk: Wanderlust and other mail clients        | 2:15:04 | 2:26:55 | 00:11:51 |
| Making Emacs a Better Tool for Scholars - Erik Hetzner   | 2:27:00 | 2:57:38 | 00:30:38 |
| Wrapping up and going forward                            | 2:58:09 | 2:59:44 | 00:01:35 |
| Lightning talk: Collaborative coding with tmux and tmate | 3:00:20 | 3:05:53 | 00:05:33 |
| Lightning talk: Cask and Pellet                          | 3:05:56 | 3:09:04 | 00:03:08 |
| Lightning talk: File sharing with Git and save hooks     | 3:09:34 | 3:17:50 | 00:08:16 |
| Lightning talk: Calc                                     | 3:18:42 | 3:33:20 | 00:14:38 |
| Lightning talk: Magit                                    | 3:35:15 | 3:49:42 | 00:14:27 |
| Lightning talk: gist.el                                  | 3:53:50 | 4:01:58 | 00:08:08 |
| Lightning talk: Go                                       | 4:02:45 | 4:16:37 | 00:13:52 |
| Question: Emacs Lisp backtraces                          | 4:16:50 | 4:20:09 | 00:03:19 |
#+TBLFM: $4=$3-$2;T

#+begin_src emacs-lisp :var data=emacsconf-a.ts :var data2=emacsconf-c.ts :colnames t :results output
(let ((format-str "ffmpeg -i %s -ss %s -t %s -c:v copy -c:a copy \"EmacsConf 2015 - %s.ts\"\n"))
  (mapc (lambda (file)
    (mapc (lambda (row) 
      (princ (format format-str (car file) (elt row 1) (elt row 3) (my/convert-sketch-title-to-filename (elt row 0))))) 
     (cdr file)))
    `(("emacsconf-c.ts" . ,data2)
      ("emacsconf-a.ts" . ,data))))

and the output:

ffmpeg -i emacsconf-c.ts -ss 4:02:25.37 -t 00:24:44 -c:v copy -c:a copy "EmacsConf 2015 - Emacs configuration.ts"
ffmpeg -i emacsconf-c.ts -ss 4:27:27 -t 00:33:33 -c:v copy -c:a copy "EmacsConf 2015 - Hearing from Emacs Beginners.ts"
ffmpeg -i emacsconf-c.ts -ss 5:03:19.30 -t 00:16:18 -c:v copy -c:a copy "EmacsConf 2015 - Lightning talk - Emacs Club.ts"
ffmpeg -i emacsconf-c.ts -ss 5:31:52.03 -t 00:29:28 -c:v copy -c:a copy "EmacsConf 2015 - Starting an Emacs Meetup - Harry Schwartz part 1.ts"
ffmpeg -i emacsconf-a.ts -ss 0:0:00 -t 00:20:04 -c:v copy -c:a copy "EmacsConf 2015 - Starting an Emacs Meetup - Harry Schwartz part 2.ts"
ffmpeg -i emacsconf-a.ts -ss 1:28:20 -t 00:39:55 -c:v copy -c:a copy "EmacsConf 2015 - Literate Devops - Howard Abrams.ts"
ffmpeg -i emacsconf-a.ts -ss 2:15:04 -t 00:11:51 -c:v copy -c:a copy "EmacsConf 2015 - Lightning talk - Wanderlust and other mail clients.ts"
ffmpeg -i emacsconf-a.ts -ss 2:27:00 -t 00:30:38 -c:v copy -c:a copy "EmacsConf 2015 - Making Emacs a Better Tool for Scholars - Erik Hetzner.ts"
ffmpeg -i emacsconf-a.ts -ss 2:58:09 -t 00:01:35 -c:v copy -c:a copy "EmacsConf 2015 - Wrapping up and going forward.ts"
ffmpeg -i emacsconf-a.ts -ss 3:00:20 -t 00:05:33 -c:v copy -c:a copy "EmacsConf 2015 - Lightning talk - Collaborative coding with tmux and tmate.ts"
ffmpeg -i emacsconf-a.ts -ss 3:05:56 -t 00:03:08 -c:v copy -c:a copy "EmacsConf 2015 - Lightning talk - Cask and Pellet.ts"
ffmpeg -i emacsconf-a.ts -ss 3:09:34 -t 00:08:16 -c:v copy -c:a copy "EmacsConf 2015 - Lightning talk - File sharing with Git and save hooks.ts"
ffmpeg -i emacsconf-a.ts -ss 3:18:42 -t 00:14:38 -c:v copy -c:a copy "EmacsConf 2015 - Lightning talk - Calc.ts"
ffmpeg -i emacsconf-a.ts -ss 3:35:15 -t 00:14:27 -c:v copy -c:a copy "EmacsConf 2015 - Lightning talk - Magit.ts"
ffmpeg -i emacsconf-a.ts -ss 3:53:50 -t 00:08:08 -c:v copy -c:a copy "EmacsConf 2015 - Lightning talk - gist.el.ts"
ffmpeg -i emacsconf-a.ts -ss 4:02:45 -t 00:13:52 -c:v copy -c:a copy "EmacsConf 2015 - Lightning talk - Go.ts"
ffmpeg -i emacsconf-a.ts -ss 4:16:50 -t 00:03:19 -c:v copy -c:a copy "EmacsConf 2015 - Question - Emacs Lisp backtraces.ts"

You can watch the Emacs Conference 2015 playlist on YouTube. At some point, each talk will probably have individual wiki pages and IRC logs at . =) Enjoy!

Related tech notes: Emacs Conf video tech notes:,, livestreamer, ffmpeg

Bubble tea and tapioca pearls

September 26, 2015 - Categories: cooking

We’ve been on a bubble tea kick at home, inspired by Peaceful Cuisine’s video.

Well, W- and J- have been having bubble tea. I’ve been enjoying my allotment of tapioca pearls in ginataan along with some bilo bilo (glutinous rice flour dumplings). Yum.

The only supermarket that carries tapioca pearls near us is a short drive or a 40-minute walk away. While browsing through the bulk food store that’s closer to us, W- discovered that they carry tapioca starch. It turns out that all you need to do is add 1/3 cup of boiling water to 1 cup of tapioca starch, knead it until it’s a smooth dough, and make whatever shapes you like. Here’s the video I picked up the instructions from:

A package of tapioca pearls is $2.39 for 250g, or $9.56/kg. The store-bought pearls contain food colouring and other additives. Tapioca starch was on sale today at $2.78/kg, and the regular price is $3.27/kg. Kneading the tapioca dough and rolling it into small spheres was fun and relaxing, so even the labour is worth it. Besides, it’s nice to know that even if I’m not near an Asian supermarket, I can make these little treats.

2015-09-26 19.09.29 2015-09-26 19.08.58

The bulk food store also carries soy milk powder, so we were joking about stocking up. That way, in an emergency situation, we can still have bubble tea. Bwahaha!

Hmm. Now I’m tempted to experiment with making soy milk from soybeans – these instructions look pretty straightforward…

Weekly review: Week ending September 25, 2015

September 28, 2015 - Categories: review, weekly

This was an excellent week for making things and for getting things done.

We spent Saturday reorganizing the pantry and freezer, throwing out things that had long since expired. We dedicated an eye-level area for snacks and things that weren’t too far past their expiration date, and we’ve been making excellent progress going through these. The new system seems to be working well.

Two sewing milestones! I modified a pattern to add a zipper and a gathered section, and that worked out nicely. I also sewed my first buttoned shirt. It looks recognizably shirt-like, hooray! I want to make a few comfy flannel shirts, but a wide-ranging search of fabric stores didn’t turn up the kind of flannel I was looking for. Oh well, I’ll just keep looking. In the meantime, I’ve added quite a few yards to my stash. I look forward to sewing my way through them. I’m also curious about generating SVG patterns based on measurements, especially if I can use them (with a little modification) for laser cutting.

A couple of new things for cooking, too. We’ve settled into a bubble tea / ginataan routine at home, both nice afternoon treats. I learned how to make tapioca pearls from scratch, too. I made corned beef steamed buns using a bun mix from the Asian supermarket. The dough needs a little work, but the filling was perfect. Yum.

Motivated by a podcast session on Friday with Daniel Gopar (we talked about the Emacs community), I finally got around to splitting up the Emacs Conf 2015 videos into individual talks and assembling them into a playlist.

Whee! Next week: Paperwork, sewing, and hanging out with people…

2015-09-28a Week ending 2015-09-25 -- index card #journal #weekly


Blog posts


Focus areas and time review

  • Business (11.3h – 6%)
    • Earn (5.6h – 49% of Business)
    • Build (5.4h – 47% of Business)
      • Drawing (3.0h)
      • Paperwork (0.0h)
    • Connect (0.4h – 3% of Business)
  • Relationships (0.0h – 0%)
  • Discretionary – Productive (24.3h – 14%)
    • Emacs (6.2h – 3% of all)
      • Process Emacsconf videos
      • Announce Emacs Hangout
    • Check out open source tools for patternmaking
    • Sewing (14.6h)
      • Make buttoned shirt
    • Writing (1.6h)
  • Discretionary – Play (13.9h – 8%)
  • Personal routines (31.0h – 18%)
  • Unpaid work (22.2h – 13%)
  • Sleep (65.1h – 39% – average of 9.3 per day)

Pattern-making: Generating SVGs for sewing with Python and tmtp

September 29, 2015 - Categories: geek, sewing

I like sewing simple clothes, and I’d like to be able to continue doing that even as measurements change without having to rely on commercial patterns that would need to be manually adjusted anyway. I also want to experiment with computer-assisted cutting, like the way the laser cutter at made it super-easy to precisely cut the same top in different fabrics.

In sewing, there’s the idea of drafting a pattern based on a set of measurements and a few calculations. You could do this with a large roll of paper, a ruler, and some way to draw a smooth curve (French curves, hip curves, or even tracing around the edge of a plate). There are software programs to do this as well, but the commercial ones tend to cost a lot if you want one that automatically drafts the rest of the pattern based on your measurements. Still, you can translate the manual instructions to digital form by drawing the appropriate lines and curves in a vector drawing program such as Inkscape or Adobe Illustrator.

While researching open source options for pattern-making, I came across Tau Meta Tau Physica (tmtp). At its core, it’s a Python script that produces an SVG based on a programmed pattern and a set of measurements. With a little fiddling (downgraded pySVG, fixed some case sensitivity issues), I got it working on my system.

Both documentation and actual code samples were pretty sparse, but I figured out the basics by reading the library code and the test patterns. I spent the day working on translating some of the basic patterns from Cal Patch’s book Design-It-Yourself Clothes: Pattern Making Simplified. So far, I’ve put together plausible-looking replicas of the A-line skirt and the basic shirt.

One of the nifty things about writing programs to draft patterns is that I can use the library functions to calculate the lengths of the cubic Bezier curves I’m using for necklines and armholes. This is handy when calculating collar length or adjusting sleeve caps. In particular, it’s neat to be able to use a loop to adjust the sleeve cap by offsetting the bicep point, although I’ll probably tweak the algorithm because it might be good to balance that with other ways to adjust that sleeve cap length.

I still haven’t tested the patterns, though, and I’m not even sure I’m collecting all these measurements correctly. At some point, I’ll print them out and sew a muslin yet. It would be good to test the sleeve cap. But the patterns look reasonable, so that’s a start.

Here are some screenshots based on my current measurements, and some links to the patterns on Github:

A-line skirt: My default measurements have this skirt sitting at my natural waist, although I’ll probably drop the waistline a bit lower before sewing it.

2015-09-29 20_57_39-foo.svg

Basic shirt: Totally untested. Would be interesting to see if this sleeve actually works, or what needs tweaking.

2015-09-29 20_59_55-_foo.svg - Inkscape

I’ll work on encoding the Burda bodice block, and then I can use that to sanity-check the shirt. Then there’s figuring out poster printing, taping up the pattern, and trying it out. Looks promising, though! I’m still boggled that the math I did for squaring lines seems to actually work. Now if only I can figure out proper seam allowance calculations instead of leaving that as a post-processing step in Inkscape or on paper…

My Github fork of tmtp