Weekly review: Week ending October 2, 2015

My tiny corporation’s fiscal year ended this week. I did a dry run of corporate tax preparation so that there won’t be any surprises when I file. Reconciled bank statements, corrected transactions, compensated for the exchange rate, followed up on stuff… Looks like it’s all ready to go once the final statements come in.

In terms of sewing, this week I focused on learning more about patterns. I used tmtp to write Python scripts that drafted basic shirt patterns, but I still need to sew muslins to test whether the patterns make sense. (Some of the pieces look a little weird…) It’s been a slow week because things still feel pretty theoretical, but maybe I’ll spend next week knocking out a few small sewing projects so I have more of that feeling of accomplishment.

Also, I got to chat with cool people about Emacs and life. =) Thanks to Bill Z. for reaching out!

2015-10-03a Week ending 2015-10-02 -- index card #journal #weekly


Blog posts


Focus areas and time review

  • Business (16.2h – 9%)
    • Earn (11.7h – 71% of Business)
      • File September invoice
      • Earn: E1: 1-2 days of consulting
      • Earn: E1: 1-2 days of consulting
    • Build (4.6h – 28% of Business)
      • Drawing (0.1h)
      • Paperwork (4.4h)
        • Enter transactions into Quickbooks
        • Doublecheck tax installments
        • Do Paypal USD conversion
        • Credit back personal amount for telephone expenses
        • Sort out GST/HST Payable account
        • Fix depreciation
    • Connect (0.0h – 0% of Business)
  • Relationships (5.7h – 3%)
    • Meet Bill Z
  • Discretionary – Productive (21.6h – 12%)
    • Emacs (0.0h – 0% of all)
    • Renew livinganawesomelife.com
    • Sewing (17.1h)
    • Writing (4.6h)
      • Try creating a Python pattern
      • Pattern-making: Generating SVGs for sewing with Python and tmtp
  • Discretionary – Play (15.3h – 9%)
  • Personal routines (30.5h – 18%)
  • Unpaid work (15.2h – 9%)
  • Sleep (63.4h – 37% – average of 9.1 per day)

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

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 Hacklab.to 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

Weekly review: Week ending September 25, 2015

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)

Bubble tea and tapioca pearls

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…

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

I spent the day cutting up the rest of the videos from the Emacs Conference 2015 Twitch.tv 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 http://emacsconf2015.org/ . =) Enjoy!

Related tech notes: Emacs Conf video tech notes: jit.si, twitch.tv, livestreamer, ffmpeg

Weekly review: Week ending September 18, 2015

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)