Welch Labs Now Offering Computer Vision and Machine Learning Consulting Services

It’s an exciting time to be in machine learning and computer vision. A rapidly advancing state of the art is creating new ways to solve old problems and bringing about entirely new business opportunities.

Along with these new opportunities comes new challenges.

1.    Keeping up with the latest developments is really hard. ~35k new computer science papers published on arxiv in 2018 alone.

2.    Hype/noise can make it difficult to see where the real opportunities are – what’s really feasible and what isn’t? Where is real value being created, and what hot topics will fade away in the coming years?

3.    The tooling is changing rapidly – Tensorflow will be just 4 years old this year, PyTorch will be 3. No one on the planet has more than 5 years of experience in these tools.

What machine learning or computer vision innovations will drive value for your business? How will you go about getting the solutions out of the lab and into production?

Welch Labs is uniquely positioned to help your business tackle these challenges and capitalize on new opportunities. We have deep expertise in modern algorithm design, implementation, testing, and deployment. We work closely with your team to identify the truly impactful innovations for your new and existing business applications; build, test, and deploy solutions, and clearly communicate processes and results.

Have a tough machine learning or computer vision problem? We would love to hear more about it – reach us here.

No New Series (Yet)

Back in April I made the audacious claim that I was going to create a new series, and that it would launch in July. Well, July has come and almost gone, with no new Welch Labs series to show for it.

I've made some good progress, but all the pieces just haven't come together yet.

I couldn't be happier with the topic - waves, applications of complex numbers, and Euler's formula cover an fascinating and impossibly large swath of physics. Thus far I've honed in on a fascinating narrative that I'm thinking the series will turn on: the vibrating string. The vibrating string was at the center of the development of an astounding amount of mathematics, and offers some really beautiful scientific and mathematical mysteries.

A lesson I'm quickly learning about my topic of choice is the huge range of mathematical rigor it covers - literally from elementary to graduate school. For this reason I'm considering breaking up this topic across several short series (ideally 3-5 episodes each) - I'm thinking that series one will require very little mathematical background, series two will require knowledge of pre-calculus and complex numbers, and series three will require calculus. I'm hoping to launch the first series in August or September.

Finally, I'd like to share some of the interesting resources I've come across thus far.

Great Books

A Student's Guide to Waves

Good Books

Rameau and Musical Thought in the Enlightenment (Cambridge Studies in Music Theory and Analysis) 

A Course in Mathematical Methods for Physicists

Origins in Acoustics: The Science of Sound from Antiquity to the Age of Newton

A Source Book in Mathematics, 1200-1800 (Princeton Legacy Library)

The Language of Physics: The Calculus and the Development of Theoretical Physics in Europe, 1750–1914

Imaginary Numbers Are Real [Part 13: Riemann Surfaces]

It took over a year, but the Imaginary Numbers Series is finally complete. By far the most labor intensive parts were part 1 and part 13. When I began the series I had no idea where it would end up. I originally planned on 6 parts, but the deeper I got into imaginary numbers, the cooler things got - and I just couldn't deal with telling an incomplete story. 

I couldn't be happier with where the series ended up - I'm so happy I was able to talk about Riemann Surfaces. I'm sure a mathematician or two will take issue with my presentation (there's a reason Riemann Surface are a graduate level mathematics topic!), but I hope I was able to give a broad audience a taste for these beautiful mathematical structures without oversimplifying the meaning out of things.

I wanted to share a few of the visualizations I used in Part 13. I used the wonderful visualization tool plotly for all 3D graphics. Here are a few visualization from Part 13:

Riemann Surface for \(w=\sqrt{z}\) 

Paths on Riemann Surface. This one's a bit slow, it takes lots of points to make that path!

3D surface plot from opening scene. 

Thanks for watching!

Imaginary Numbers Are Real [Part 12: Riemann's Solution]

In parts 12 and 13, we get to spend some time inside the head of arguably the most important mathematician of the 19th Century - Bernhard Riemann. We're going to begin our next episode by creating a Riemann Surface from our 2 w-planes. This surface will have the wonderful property of making our colored path continuous! While the full theory of Riemann surfaces is far more complex than we can cover here, the baby Riemann Surface we'll create will be sufficient to elegantly visualize our 4 dimensional multifunction, and explain the weird path behavior we saw in back in part 11. You can download a pdf version of the w-planes here.

Your very own w-planes to cutout!

What's Next for Welch Labs?

Welch Labs has been inactive for 3 months. This will be changing soon. I’ll be finishing up the Imaginary Numbers Series, and am excited to premiere a new series at ML CONF in New York this April. (Use the code Welch18 for $45 off your ticket!)

My vision for Welch Labs in 2016 is continue making the highest-quality educational content possible. I’m excited to create new Machine Learning content this year, as well as math content in the vein of my Imaginary Numbers series.

If you’re interested in the Machine Learning content - please read on, I’d love to hear what you think. If you’re more interested in math content, I’d also love to hear what you think! Click here to see what math topics are coming up.

The next Machine Learning series from Welch Labs will cover Decision Trees and Mutual Information. This direction came about for a few reasons:

1. As a strong Intro to Machine Learning. I love making content that appeals to and is understandable by people from all education levels, high school to graduate school. Decision trees are perhaps the "original" machine learning tool - they are easy to understand, and provide great "bang for the buck" - making for a great introduction to machine learning.

The Five Tribes of Machine Learning According to Pedro Domingos. Image from The Master Algorithm. 

2. Stealing from The Master Algorithm. If you're interesting in ML and haven't read Pedro Domingos' book - The Master Algorithm - I highly recommend it. Certainly the best "pop" machine learning book I've read. Pedro weaves a wide variety of Machine Learning approaches into a single narrative in clear and approachable ways. I love this stuff - it's the kind of history and context you can't get from reading technical resources. Pedro structures his book by dividing Machine Learning into 5 tribes.  While this is clearly a simplification of a complex field, I think it is a very useful one. I think it's so useful in fact, I'll be stealing it :). I'll be roughly following Pedro's path through the world of Machine Learning for the next few series - starting with Decision Trees. Pedro seemed like a nice enough guy when I met him at ML CONF Atlanta - so I'm hoping he won’t be to mad. 

3. Decision Trees = The Most Popular ML on the Planet. Although no longer among the newest and hottest algorithms out there, trees are incredibly widely used across many diverse applications. The success of trees is likely a result of many factors - but I believe the most important is the simplicity of the resulting models. In my professional work, trees have beat out other models again and again, simply because I can clearly explain the resulting algorithm to anyone. Try that with a Neural Network!

Research Time

The next couple weeks are all about research. I'm reading through Ross Quinlan's book as well as CART. I'm working to develop a deep understanding of the history and fundamentals and will build up from there. Along the way I'm looking for interesting resources on and applications of decision trees. I would like to cover a simple example in detail to put emphasis on the tools and techniques, but I'd also like to spend some time exploring how Decision Trees are used in big, challenging problems. Mutual information and entropy are big parts of most Decision Tree algorithms, and are clearly topics that could make up their own series - to keep my scope in check, I'll be investigating these through the lens of decision trees.


As I begin to shape the series, I'd love to hear from you. What do you think is interesting here? What are some cool/interesting applications of decision trees? What are some resources you've found helpful? What would you like to know about decision trees and mutual information? I'd love to hear what you think - please let me know what you think in the comment section below. Thank you!



What Math Topics Are Next for Welch Labs?

I’ve really enjoyed making the Imaginary Numbers Are Real series thus far. And I promise, I’ll be wrapping it up as soon as possible. What I really love about this series was presenting what I felt to be a complete picture - all the way from the origin and very basics of imaginary numbers, to the modern mathematics they enable. I’m excited to make more series like this, and am working through possible topics. Three of my favorite are:

1. Factoring

2. Euler’s Formula

3. Introductory Statistics

What do you think?

What mathematics material would you like to see from Welch Labs in the future? If you’re a teacher, what topics/formats/approaches would really help you? Please let me know what you think in the comments section below. Thank you!


Imaginary Numbers Are Real [Part 8: Math Wizardry]

This week we use the complex plane to solve algebra problems. I think the idea of solving tough algebra problems visually is pretty fantastic. The problems I present in this episode, \(X^3-1=0\) and \(X^8-1=0\) give solutions that are roots of unity, numbers that equal one when raised to integer powers.  These numbers have a special place in number theory, and show up in one of my favorite pieces of mathematics: The Discrete Fourier Transform (DFT):

$$X[k] = \frac{1}{N_F}\sum^{N_F-1}_{n=0}h_w[n]x[n]e^{-j2\pi k/N_F}$$

The DFT is a huge part of signal processing, allowing us to convert time series, such as audio signals, into frequency representations in the complex domain. Frequency representations of signals are crucial for all kinds of applications, such as audio filtering, image processing (e.g. Instagram filters), audio and image compression (e.g. mp3s, jpeg). The Fourier Transform also has lots of interesting overlap with our hearing systems work – which we’ll talk about a little in part 11.





Imaginary Numbers Are Real [Part 7: Complex Multiplication]

This week we uncover the connection between complex multiplications and the complex plane. Our result is another approach to complex multiplication. As shown in figure 1, we know have two completely valid, but completely separate ways to multiply complex numbers. There are certainly other math problems that are solvable by various methods - but I really like this one because it reminds me that there's more to math than what we see on the page. Since these two methods look so different, but do the same exact thing, this suggests that we are only glimpsing a deeper process from different perspectives. 

Figure 1. Two ways to multiply complex numbers and the Milky Way hangin out. 

This must raise the question, what is the deeper process? What is the connection between math and our universe? Why is math unreasonably good at predicting reality? Questions like these land is firmly in the realm of metaphysics - and are questions that people have asked for thousands of years. In fact, as we saw earlier in the series, questions like these historically have slowed down the development of mathematics. 

There's no simple answer to questions like these, but they should serve to remind us that at their core, math and science are ways that we make meaning out of the world around us.

Which is pretty cool.  

Imaginary Numbers are Real [Part 6: The Complex Plane]

Imagine you had an art class in which they taught you how to paint a fence, but never showed you the great masters. Of course, you would say; ‘I hate art.’ You were bad at painting the fence but you wouldn’t know what else there is to art. Unfortunately, that is exactly what happens with mathematics. What we study at school is a tiny little part of mathematics. I want people to discover the magic world of mathematics, almost like a parallel universe, that most of us aren’t aware even exists.
— Edward Frenkel

Let's Do Some Real Math

This week I'm leaving you with a challenge. The quote above is from Edward Frenkel, a Berkeley mathematics professor, author of Love and Math, and generally cool guy. Frenkel draws a really interesting analogy about how we teach math. People who do math for a living exist in an uncertain world of creativity and discovery, while math classes are typically quite the opposite. Math is, by nature, a highly technical subject - meaning that just wrapping your head around things can take quite a bit of time. This leaves many students too tired for "creative discovery". The unfortunate side effect here is that, just as Mr. Frenkel says, many students do end up feeling like fence painters, and not explorers. 

With this in mind, between this episode and the next, I'm leaving you with some actual math. A real problem. No fence painting.

Forgive me in advance for the vague nature of the problem statement - but when you come across a real problem in STEM, this is what it feels like. This is the nature of mathematical discovery - we don't know what we're searching for. The upside is that when we do find something, this makes it all the more exciting. And after all, it wouldn't really be searching or discovery if we knew what we are going to find beforehand. When you hop on a plane to fly to Albuquerque, you aren't "discovering it".

Your Assignment

So this is your job. I would like you to discover for yourself what it means to multiply complex numbers on the complex plane. 

There's a very specific, and very useful interpretation of complex multiplication using the complex plane, and I want you to find it.

Figure 1. Tools you need.

Figure 2. Examples to try.

The tools you need our colorfully summarized in figure 1. Our approach next time will make use of four examples, these are (less colorfully) shown in figure 2. I recommend for each example plotting the two numbers we're multiplying and the result on the complex plane. From there, look for patterns, make theories, test your assumptions, and do try to have some fun. Good luck!

Imaginary Numbers Are Real [Part 5: Numbers are Two Dimensional]

In part 5 we begin to see what makes imaginary numbers so unique, by investigating their special relationship with real numbers. It's interesting that mathematicians regularly made use of \(\sqrt{-1}\) for the 200 years after Bombelli's death without recognizing its deeper connection to the real numbers. I think this says a lot about how difficult it is to wrap your head around imaginary numbers. If math geniuses like Euler missed this, it certainly isn't obvious. 

This episode concludes with a concept we'll dig into more next time: the complex plane. This is the plane formed by adding the imaginary axis to the real axis. The complex plane is more useful than ordinary planes because of the special relationship between its axes - this is what we'll explore next time. 


Imaginary Numbers Are Real [Part 4: Bombelli's Solution]

In part four we see how Bombelli used \(\sqrt{-1}\) to solve Cardan's problem. This was cutting edge mathematics at the time - but these days can be completely understood by strong algebra students. I tend to move at a pretty quick pace through the derivations -  but I assure you, the math isn't so bad - and you can always pause the video to check it out in more detail. Keep in mind that you may need to change your playback settings on YouTube to HD to see everything.

What strikes me about this part of the story is how unimpressed Bombelli was with his own work - we see this type of behavior with a number of scientists and mathematicians - Newton comes to mind. This makes me wonder how many folks are out there sitting on amazing discoveries, but haven't shared them yet because they don't think their work important enough. 

It's interesting to me as well that doing quality work not only requires the ability to do the work, but the ability to gauge what work is important and what work is not. The later seems to be more of an art than a science. 


Imaginary Numbers Area Real [Part 3: Cardan's Problem]

In part 3 we begin to learn how Rafael Bombelli was able to deal with Cardan's problem. We also get our first look at the mechanics of working with \(\sqrt{-1}\). It always surprises me how quickly most student accept \(\sqrt{-1}\).

I think in most cases this is because students are more interested in finding the answers to the homework than understanding why numbers with a ridiculous name like imaginary became part of our mathematical lexicon. I can hardly blame them, I shared the same outlook through most of high school and college. Who cares about the why when I'm only being evaluated on the how?

Not to get too preachy here, but I will briefly say that once we enter the real world with its real problems and real consequences, the why quickly becomes indispensable. When we must solve real problems - problems without an answer in the back of a book -  we must be confident in our tools. To be effective, we need to understand the strengths, shortcomings, and assumptions behind the mathematics (or whatever tools) we use.  

This this perspective in mind, imaginary numbers begin to look suspicious. As if they are a specifically designed "trick" to deal with certain problems. I mean really, what could these numbers possibly mean?

I think this is the correct way to approach imaginary numbers. Maintaining our fully justified skepticism, we can explore why these numbers were accepted, and what the implications are. Through remaining skeptical, we ask better questions and can truly appreciate why imaginary numbers are the solution to "real" mathematical problems. 


Imaginary Numbers Are Real [Part 2, A Little History]

In part 2 we explore the origin of imaginary/lateral numbers. Like many breakthroughs in math and science, this one comes as a results of existing methods not quite working as they should. Even though the square roots of negative numbers have been reported to show up since first century AD, they were easily ignored and dismissed as the problem's way of saying there are no solutions.

It wasn't until serious solutions to cubic equations showed up on the scene in the 1500s that mathematicians we're compelled to take \(\sqrt{-1}\) seriously. And it's not because they wanted to. Cardan was aware that using\(\sqrt{-1}\) did have some utility, but called such solutions sophistic (subtly deceptive reasoning or argumentation). Just like negative numbers and zero before them, \(\sqrt{-1}\) was mistrusted because it didn't seem to be related to anything physical. As we'll see next time, the only reason \(\sqrt{-1}\)  began to gain traction was because it allows us to beautifully and elegantly find the solutions to cubic equations. 



Using the cubic x^3 = 15x + 4.

In part two I make pretty heavy use of the cubic $$x^3 = 15x + 4.$$

This cubic originally showed up in the work of an important character we'll meet in part 3, Rafael Bombellli. A pivotal part of my argument is that cubics must have at least one real root because of they way they're shaped (more specifically because of their end behavior). As you may already know, cubics can have up to 3 real roots - and if we plot our example, we see that this case does have three real roots. 

$$f(x) = -x^3 + 15x + 4$$

I was a bit concerned about the legitimacy of the argument that since our function must cross the x-axis at lease once, the del Ferro-Tartaglia-Cardan formula must hold up (see below for full derivation):

$$ x^3 + cx = d\\ x = \sqrt[3]{\frac{d}{2} + \sqrt{\frac{d^2}{4}-\frac{c^3}{27}}} - \sqrt[3]{-\frac{d}{2} + \sqrt{\frac{d^2}{4}-\frac{c^3}{27}}}$$

After all, if the function only did have one real root, it seems the above formula may just yield the imaginary roots. If we try the quick example \( x^3=3x+20\), plugging into the above formula we obtain \(x = \sqrt[3]{10+3\sqrt{11} }-  \sqrt[3]{-10+3\sqrt{11} }\) which comes out to \(x=3.08085946\), which is the real root of the equation. So it's fair to say that under certain conditions and when there is only one real root, our formula will find it. Something I'm not quite clear about here is if this formula will always find the real root, or if it will sometimes yield the imaginary roots.

In the video I gloss over things a bit for the sake of clarity - Cardan and his contemporaries likely knew that a function like \(x^3 = 15x + 4\) would have three real roots - and in the end, this may have been more compelling to them than just knowing that all cubics must have at least one real root. 


Solving for x in linear, quadratic, and cubic equations.

It's hard to imagine how del Ferro must have felt after discovering the solution to his cubic equation - he was arguably the only person on the planet who knew how to solve equations like this. The part of the video were I show the derivation his cubic formula goes pretty fast, so I've included a proper derivation here. 


$$x^3 + cx = d$$

let \(x = u+v\)

$$(u+v)^3 + c(u+v) = d \\(u^2 + 2uv + v^2)(u+v) + c(u+v) = d\\(u^3 + 3u^2v + 3uv^2 + v^3) + c(u+v) = d\\u^3 + v^3 + 3uv(u+v) + c(u+v) = d\\u^3 + v^3 + (3uv + c)(u+v) = d\\$$

This part is a little strange, from what I've read, this is supposed to be del Ferro's deep insight - it seems a little hacky to me! If we let \(3uv + c = 0\), then \(u^3 + v^3 = d\) and \(v = \frac{-c}{3u}\).

$$u^3 + \big(\frac{-c}{3u}\big)^3 = d \\u^3 - \frac{c^3}{27u^3} - d = 0 \\u^6 - du^3 - \frac{c^3}{27} = 0$$

let \(z = u^3\)

$$z^2 - dz - \frac{c^3}{27} = 0$$

Now using the quadratic formula:

$$z = \frac{d \pm \sqrt{(-d)^2-(4)(1)(\frac{-c^3}{27}})}{2} \\z = \frac{d}{2} \pm \frac{\sqrt{d^2+\frac{4c^3}{27}}}{2} \\z = \frac{d}{2} \pm \frac{\sqrt{d^2+\frac{4c^3}{27}}}{\sqrt{4}} \\z = \frac{d}{2} \pm \sqrt{\frac{d^2}{4}+\frac{4c^3}{(27)(4)}} \\z = \frac{d}{2} \pm \sqrt{\frac{d^2}{4}+\frac{c^3}{27}} \\$$

now substituting back in \(z = u^3\):

$$u^3 = \frac{d}{2} \pm \sqrt{\frac{d^2}{4}+\frac{c^3}{27}} \\u = \sqrt[3]{\frac{d}{2} \pm \sqrt{\frac{d^2}{4}+\frac{c^3}{27}}} \\$$

from above,

$$u^3 + v^3 = d \\v^3 = d-u^3 \\$$

Only consider positive root (using the negative root will result in the same exact answer):

$$v^3 = d - \bigg[\frac{d}{2} + \sqrt{\frac{d^2}{4}+\frac{c^3}{27}}\bigg]\\v^3 = \frac{d}{2} - \sqrt{\frac{d^2}{4}+\frac{c^3}{27}}\\x = u + v \\x = \sqrt[3]{\frac{d}{2} + \sqrt{\frac{d^2}{4}+\frac{c^3}{27}}} + \sqrt[3]{\frac{d}{2} - \sqrt{\frac{d^2}{4}+\frac{c^3}{27}}}$$

We can also obtain another perfectly valid version of the formula by factoring out a \(\sqrt[3]{-1} = -1\) from the second term:

$$ x = \sqrt[3]{\frac{d}{2} + \sqrt{\frac{d^2}{4}+\frac{c^3}{27}}} - \sqrt[3]{-\frac{d}{2} + \sqrt{\frac{d^2}{4}+\frac{c^3}{27}}}$$

This is the formula del Ferro derived. It's crazy to think that ~500 years ago only one person on the planet knew this formula - and he had no idea it would lead to the development and acceptance of imaginary numbers.  We end up focusing on a slightly different cubic, introduced later by Cardan:

$$x^3 = cx + d$$

Note that this rearrangement changes the sign of c. Substituting \(-c\) for \(c\) into our final result above, we obtain:

$$x = \sqrt[3]{\frac{d}{2} + \sqrt{\frac{d^2}{4}-\frac{c^3}{27}}} - \sqrt[3]{-\frac{d}{2} + \sqrt{\frac{d^2}{4}-\frac{c^3}{27}}}$$

Just as above, we can factor out a \(\sqrt[3]{-1} = -1\) from the second term to obtain the equivalent formula: 

$$x = \sqrt[3]{\frac{d}{2} + \sqrt{\frac{d^2}{4}-\frac{c^3}{27}}} + \sqrt[3]{\frac{d}{2} - \sqrt{\frac{d^2}{4}-\frac{c^3}{27}}}$$

This is version of the cubic formula that will ultimately lead us into issues with \(\sqrt{-1}\), as shown in the video.



An Imaginary Tale: The Story of sqrt(-1) - Paul J. Nahin Nahin's book has proven incredibly helpful through the process of creating this series, I highly recommend it for those looking to go deeper into imaginary numbers. 

Mathematics and its history - John Stillwell

Imaginary Numbers Are Real [Part 1: Introduction]

Today I'm excited to release part one of my summer project: a YouTube series entitled "Imaginary Numbers are Real". I'll be releasing parts each Friday, starting today, and ending on October 23.

About the Series

Imaginary numbers are not some wild invention, they are the deep and natural result of extending our number system. Imaginary numbers are all about the discovery of numbers existing not in one dimension along the number line, but in full two dimensional space.  Accepting this not only gives us more rich and complete mathematics, but also unlocks a ridiculous amount of very real, very tangible problems in science and engineering.

In this ten part YouTube series, we'll explore the origins, storied development, and fascinating applications of imaginary numbers. We'll focus on the how, and more importantly, the why behind what may be the murkiest subject in high school mathematics. This series is appropriate for anyone from the high school to graduate school level and beyond who is interested in (or required to be interested in) imaginary numbers.


1. Introduction
2. A Little History
3. Cardan's Problem
4. Bombelli's Solution
5. Numbers are Two Dimensional
6. The Complex Plane
7. Math Wizardry
8. Closure
9. Complex Functions
10. Applications


Like most mathematics, passive listening will only get you so far - you really need to work with imaginary numbers to develop a full understanding. This series is accompanied by a workbook that includes guided notes for each video, additional fun stuff that didn't make it into the videos, exercises with solutions, and a test that covers the entire topic. This is a great way for individuals to develop a deeper grasp of the material, and an excellent resource for educators at the high school or college level. The workbook will be available October 23, 2015 - you can preorder now to ensure you receive a workbook from the first limited print run.

Liner Notes

I had a great time creating this series - it's funny, I actually set out to create a series on the Fourier Transform (which I still plan to do), researching this led me to the fascinating Euler's formula and identity, which ultimately led me all the way down to imaginary numbers. I've been using imaginary numbers for over a decade, but never really questioned where they came from, why we need them, or why they're so ubiquitous in engineering. What I found really fascinated me, and really served to remind me how deep and profound the connection between mathematics and reality is. Imaginary numbers are just an abstract concept that basically fall out of algebra, but turn out be essential in describing real world processes. It's ironic that zero, negative, and imaginary numbers were resisted for so long precisely because they don't seem directly connected to anything in the real world - but once we take the leap of faith and accept these guys, we find ourselves with incredible tools are essential in describing complex real world phenomena.

The production for this series gave me a run for my money! I had the idea of the "pulling the function out of the page" shot early on- but I had no idea how much work it would take! I built a custom 4 axis camera rig, wrote custom python code to control it, learned how to 3d animate in Cinema 4d, and how to composite (and what compositing is) with Adobe After Effects. All this was a blast, but took a huge amount of time and gave me even more respect for folks who make films.

Close up of camera rig for shooting motion shots.

Four axis camera rig I built this summer. 

Finally, if you're really paying attention, you may see that I'm wearing a ring in some shots, but not in others - that's because I got married to my wonderful wife Alison as I was finishing shooting part one.

Summer reading...

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.”

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.