Waffles and Harmonic Motion [Part 1]

This year I've been working through a topic that I thought I understood pretty well - acoustics. As I went through the process of writing and planning some videos on the topic, I quickly realized that there were some sizable gaps in my own understanding. It's amazing how clearly and completely the act of teaching or explaining something reveals the shortcoming in my own knowledge.

I set out to make a video about the acoustic wave equation, but came to realize that I didn't fully understand forced harmonic motion, or for that matter simple harmonic motion (SHM) - something I learned for the first time in high school, ten years ago! In the process I was fortunate enough to come across Feynman's lectures in physics - an absolutely wonderful resource that I wish I had been exposed to earlier. I've never read someone who has as much fun explaining physics. Truly inspiring.

Thus far, this exploration has results in this two part video series on harmonic motion. I try to have some fun along the way, while digging deeply into the underlying assumptions and math. The connection between circular and harmonic motion was particularly fascinating me, this is something I try to spend some quality time on, and resulted in the title of the video.

Finally, harmonic motion forms a basis for many more advanced topics, and I hope what I have done here is to provide some clear and practical ways of thinking about the topic. 

Supporting Code. 

Murdering My To-Do List With GTD + OmniFocus

The mind is for having ideas not holding them.
— David Allen

After writing 17 Reasons I Hate My To-Do List  in late march, a couple of very nice folks (Thanks Sam and Alex P) suggested I look into OmniFocus + GTD (Getting Things Done). In the several weeks since then I have read most (I think all the relevant parts for me) of David Allen's book, Getting Things Done, and begun using OmniFocus to manage my time. I can happily say that these approaches and tools address many of my grievances with my to-do list and have already allowed me to be more focused and productive. 

David Allen is a very practical guy presenting a very practical framework for time management. He brings no big agenda or overpowering philosophy, just lots of little things that, taken together, can make a big difference.

OmniFocus is a well-put-together application for OSX and iOS that generally follows the philosophy of GTD, although it certainly can be used in other capacities.

For those interested in saving some time, I recommend David Allen's course on from Lynda.com , as well as the OmniFocus course available from Lynda.com, although it is a bit out of date.

Here's way to much information on how GTD + OmniFocus has helped me address my issues with my to-do list:

 1. Stress. David Allen refers to incomplete tasks floating in our heads as "open loops". His theory goes that as long as there are incompletes floating around in your head (subconsciously or consciously), you won't be performing at your best. The way I was using my to-do list compounded this, reminding me of all my 'open loops' throughout the day. Allen's first big step in getting things done is to "capture" all this "stuff" floating in your head and around your life. I can genuinely say that this process alone, emptying my head and environment of all the things I was keeping track of, was immensely helpful, and immediately create more head space for creativity.

2. Variable Task Types. GTD generally addresses this issue through the processing of "stuff" from the "in box".  If GTD was summarized in a single figure it would be this one: 

This organizational scheme is a great tool for dealing with the inherently inhomogeneous tasks we must all deal with. OmniFocus provides some great tools for this as well, all tasks can be divided across projects and context, and you can choose to show tasks from only certain projects or certain contexts. Context can be all kinds of things, such as "errands", or "at work". One context I created that I'm enjoying using is "creative". I generally prefer to do and am only really effective at creative work when I have at least 3 unobstructed hours in the morning to work, this is when I can switch on my creative context on OmniFocus, and all my other shit that doesn't fit in this context isn't there to divide my attention. I love it. 

3. Binary Outcomes. According to my to-do list, a task has either been completed or not. This really sucks for tasks with dependencies, multiple steps/stages, or where I'm waiting on someone else. The GTD philosophy deals with this pretty gracefully by making any to-do list item with more than one step into a "project". Allen emphasizes identifying the next action for the project, claiming that not knowing the next action means that the project isn't well defined yet, and the "open loop" in your head won't be closed until you do this. OmniFocus also includes a great "on hold option", and you can choose to defer tasks until a certain date - super handy!

4. Variable Task Lengths. Some things I can knock out in five min, some five hours, some could take all week if I allowed them to. GTD + OmniFocus handle this well through the creation of projects. Projects are nice too, because it's not immediately important to establish all the steps to complete a project - just the next action - I really like this.

5. Priority. OmniFocus allows you to "flag" tasks. Although I haven't really found this useful up until this point, I've dealt with relative task priorities by deferring the due dates for less important tasks. This seems reasonable effective.

6. Timing. Some tasks need to be done at certain times, and OmniFocus provides due dates and defer till options for each task. I cannot tell you how nice it is to now see or think about stuff that's a few weeks out, this really clears up space for me to focus on what needs to get done now.

7. Scheduling. My to-do lists lives separately from my calendar, which is fine for some tasks, but not optimal for bigger things. OmniFocus does not totally solve this problem, but does partially integrate with iCal, which is handy. I'm still manually "scheduling" tasks that take larger chunks of time - so some tasks are redundant (on my celendar and OmniFocus), which is a little annoying, but not really a big deal.

8. Deadlines. OmniFocus makes deadlines easy.
9. No Connection to Long Term Goals. This is still something that requires a lot of hands on attention- as it should (it's probably a good idea to be "hands-on" with the direction your life is going). GTD suggest a "review" for each project on a weekly basis - which I think is a great (hopefully achievable) idea, and generally helps ensure that daily actions push me towards where I want to go. Something that really resonated with me comes from page 52 of GTD:

“There will always be a long list of actions that you are not doing at any given moment. So how will you decide what to do and what not to do, and feel good about both? The answer is, by trusting your intuition. If you’ve captured, clarified, organized, and reflected on all your current commitments you can galvanize your intuitive judgment with some intelligent and practical thinking about your work and values.”
— GTD

I really like the idea of "doing my homework" ahead of time, when I'm in an alert and positive state, and once I have my priorities set and organized, trusting my subconscious and conscious to make good decisions.

10. Don't Take Switching Penalties Into Account. I incur a high switching penalty when moving between complex tasks. My brain really needs at least a few hours on one task to do good work. I didn't see a mention of this in GTD, but using context in OmniFocus can help here - and OmniFocus can generally help me not be distracted by the short term shit I have to get done when I'm working on long-term, creative, and fun things in the mornings.

11. Overly Ambitious. My lists are often too ambitious and not-realistic, resulting in more stress. I think this is more of a personal issue than an OmniFocus + GTD problem!

12. Uncomfortable Things Get Avoided. To-do lists make it easy to avoid uncomfortable (which typically means important) tasks and kick them down the road from week to week. Again, I think this is more of a "me" problem to work on - although, weekly reviews of projects could help with this.
13. Reactive, not Proactive. With to-do lists, it's very easy to adopt a reactive mindset - "these are the things I have to do this week". The GTD Capture, Clarify, Organize, Reflect, and Engage methods definitely help here - sometimes I find myself reacting to and trying to work on "stuff" at the same time, OmniFocus gives me the nice option of throwing it in my inbox and processing it when I'm ready.

14. Unbalanced. Some tasks are creatively restorative, while some are taxing. Writing code and running are very well balance activities for me. I'm working on figuring out ways to use OmniFocus to create more balance in my life.

15. No Sense of Time. No daily, weekly, monthly demarcations. OmniFocus clearly overcomes this limitation of To-Do lists.

16. Created and Executed in Different States - At the beginning of the week I'm too ambitious, by the end I’m just trying to get shit done. For example, last week Monday-Thursday we're well paced, wonderfully productive, and relatively low stress - and then Friday hit and I suddenly had 18 tasks that day. I think just seeing that list set me up for a less focused day - and the prophesy fulfilled itself - I didn’t nearly get done what I had hoped. I think the way GTD suggests dealing with this is weekly reviews - you want to review your projects when you're level-headed, not buried. And when you are buried in the middle of the week, you have the "map" you made yourself to rely on. This is area I could definitely improve in, too often I become overwhelmed and change course in favor of dealing with short-term things.

17. No Room for Multiple Approaches. Often, the first way I try to achieve a result doesn't work. Only though trial and error, and changing my strategy do I get where I want to go. The GTD method of clarifying and determining what the next step is, while not actually doing the step, before hand ("homework"), is really useful here. Multiple approaches are fine, but it's better to sort things out a bit in advance, and not while distracted by the work itself. Processing task and prioritizing time is a project in itself, and should be given the full attention it deserves!

GTD + OmniFocus will not solve all your problems, but are excellent tools based on sound and simple principles. Thanks again to the readers who recommended them!

17 Reasons I Hate My To-Do List

Let me preface this by sharing the dumb way I use to-do lists. As I go through the week, I update a list of all the things I need to do. Five to ten times a week I'll schedule the big things in my calendar, and I'll complete the smaller things as I have time. I typically don't finish my weekly to-do lists. In 2015 I've introduced three to-do lists (low, medium, and high priority), which helps a bit, but I'm still generally annoyed with my process. Here's what I hate about it:

  1. Stress. I can really only hold three things in my head at a time - any more than that, and I can easily become overwhelmed. The things I have to do creep into my subconscious and make me weary before I even get started. In fact, if you want to feel overwhelmed,  I recommend making a big, gross to-do list and stare at it for a while.
  2. Variable Task Types. Maybe I'm just using to-do lists wrong, but I always end up with a huge variability across task types (e.g. Laundry, Taxes, Coding Project, Go for a Run).  Placing these items on the same list makes them appear homogenous, when in reality they should not even be compared. Should I work on this coding project, or read about how to make my business more effective? Deciding between very different tasks each time I look at my to-do list is taxing. 
  3. Binary Outcomes. According to my to-do list, a task has either been completed or not. This really sucks for tasks with dependencies, multiple steps/stages, or where I'm waiting on someone else.
  4. Variable Task Lengths. Some things I can knock out in five min, some five hours, some could take all week if I allowed them to. Putting these on the same list and picking between them imposes a false dichotomy and is unnecessarily taxing.
  5. Priority. To-do lists do not reflect the relative priorities of tasks. This is especially true for longer time horizons (the long-term things that will matter a lot in a year to two often appear less important when compared to things that need to get done this week).
  6. Timing. Some tasks need to be done at certain times, to-do lists have no way of handling this.
  7. Scheduling. My to-do lists lives separately from my calendar, which is fine for some tasks, but not optimal for bigger things
  8. Deadlines. To-do lists don't take deadlines into account.
  9. No Connection to Long Term Goals. How do the things on my to-do list fit in with where I want to be personally and professionally in 1, 5, or 10 years? Further, once tasks are on a list, it's easy to forget the purpose - why I'm even doing something - how is this pushing me forward?
  10. Don't Take Switching Penalties Into Account. I incur a high switching penalty when moving between complex tasks. My brain really needs at least a few hours on one task to do good work. When I switch between complex tasks, my brain is too often stuck on the last task. I can't give the new task enough attention, and fractured focus tires me out quickly.
  11. Overly Ambitious. My lists are often too ambitious and not-realistic, resulting in more stress.
  12. Uncomfortable Things Get Avoided. To-do lists make it easy to avoid uncomfortable (which typically means important) tasks and kick them down the road from week to week.
  13. Reactive, Not Proactive. With to-do lists, it's very easy to adopt a reactive mindset - "these are the things I have to do this week".
  14. Unbalanced. Some tasks are creatively restorative, while some are taxing. Writing code and running are very well balance activities for me. After programming for 3-5 hours or until I become stuck, going for a run allows me the space for my whole mind to internalize a problem. It's very rare that I go for a run and don't come back with new insight into my work. Putting "Write Code", and "Run" on my to-do list doesn't really capture this.
  15. No Sense of Time. No daily, weekly, monthly demarcations.
  16. Created and Executed in Different States - beginning of the week I'm too ambitious, by the end I’m just trying to get shit done.
  17. No Room for Multiple Approaches. Often, the first way I try to achieve a result doesn't work. Only though trial and error, and changing my strategy do I get where I want to go. To-do lists, by definition, contains tasks and not outcomes. Focusing on a single tasks means I may miss the big picture, and other, more effective ways to get where I want to be.

I currently don't have much insight into how to fix these issues, and many of them probably don’t have a "solution". I do have some observations. First, to-do lists are poor guides for execution.  I think the to-do list is really the input of a planning system. The output of our system is how we actually spend our time, and using a to-do list as the only guide as we go throughout the day is not a good idea.

What a to-do list is really doing is compressing, or reducing the dimension of the process of allocating your time and focus throughout the week. Allocating your time and energy is a complex process, plagued with dependencies and biases. The to-do lists' advantage, simplicity, artificially reduces the complexity of the very important decision of how you spend your time. At the end of the day, the way you spend your time is your life, and a to-do list is a poor, low dimensional abstraction of the trade-offs and considerations that should go into planning and executing on the future you're trying to create.

Obviously, there is no fix-all solution here. Deciding how to allocate your time is a never-ending process, and that's ok. It should be. However, I've grown tired the way I use my to-do list as part of my decision making, and am ready to change something. I don't know what to change yet, but I do have some questions I'm going to think about:

  1. Across what dimensions does my to-do list reduce the complexity of my life, and is this a good trade-off? Where could/should I reintroduce dimensions (task priority/time frames/deadlines/balance…)?
  2. Are there ways I can reduce the stress of a big pseudo-homogenous list of tasks hanging over me each week?
  3. Is it possible to create a system where a to-do list is just the input, and tasks are somehow sorted to reduce my complaints above, without being artificially complex or bulky?

Acoustics to Deep Learning

Supporting Code

I'm starting a new series today on Acoustics to Deep Learning. Rather than simply discuss tools (Deep Learning, SVM...), I've decided to present a bunch of interesting techniques in the context of audio and sound. 

 While we’re covering a lot of ground here, in some cases in substantial depth, this series is not meant to be exhaustive or even thorough. I’m going to talk about what I think is interesting and compelling with as much depth and clarity I can squeeze into a YouTube video. This is mostly because I believe that with the number of resources available, being thorough is a waste of our time. Finally, we will cover some serious computational techniques here, but only in the context of examples. I think it’s important to remember that as cool as tools and techniques are, they are only, at most, a means of accomplishing something. The techniques shown here were not developed in a vacuum, but in the rich and complex world of application, and I believe that presenting tools and techniques in the absence of the appropriate context does you a disservice, and can even hinder learning – the why is just as important as the how.