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)

Weekly review: Week ending September 11, 2015

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 4, 2015

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)

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

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 twitch.tv 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 twitch.tv/emacsconf. 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 meet.jit.si. This was on the same computer that did the twitch.tv 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 twitch.tv, 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, twitch.tv 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 http://www.twitch.tv/emacsconf/v/13421774 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 Twitch.tv recorded videos. Hope they come in handy for other people too.

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

Hat tip to Reddit and superuser.com for tips.

Monthly review: August 2015

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