On the silver lining front, one nice thing about WDP is that I get to spend more time with my kids. My daughter has taken to sitting with me on and off during the day, sometimes doing her schoolwork, sometimes watching videos, and sometimes being my debugging aid.
The other day she noticed I was arguing with my computer, doing some Google searches, then yelling (quietly) at
my computer again. After she got over being surprised that I was using Google to figure things out I started
explaining to her what I was trying to do. I was writing a bash script to get the members of an LDAP group and
see which members of that group weren't in a different group. Sounds simple, right? Conceptually, yes, but I
to be able to share the code, so I was making it a little more "production ready" than I might
have. It also involved some relatively simple usage of
jq to extract some fields
and I wanted to pretty print the results in a way I could pipe into the next part of the chain.
things weren't going exactly how I wanted.
So I explained to her the services I was calling, what I expected the results to be, and what I wanted to
extract. I explained the weird symbology of bash variables and why there were single quotes, double quotes,
and what a
/dev/null was. I told her what
cerberus was and why I needed to
it. I even complained a little about
yab and YARPC and why I wished I didn't have to use it.
asked me some questions and I explained the answers to her. And I got it figured out, got the results I needed,
was able to share the tool and the results I needed. Then I thanked her for being my rubber
Initially that confused her even more, but when I explained rubber duck debugging she got that
For those that don't know, rubber duck debugging is how you do pair programming when you're alone. You explain the problem, the invariants, the processes and the intermediate results to something, traditionally a rubber duck. And you go into as much detail as you need to make sure the duck understands it. What happens quite often is that you realize where your assumptions and understanding don't match reality. It could be a problem with your memory, the documentation, or something else entirely, but you find the disconnect, and you fix it. Or you find the disconnect and you go update your understanding and then you fix it. And even if that doesn't happen your understanding of the problem goes way up and you can then ask a much better question, which means you're much more likely to get an answer that helps. So next time you run into a problem and get stuck, ask a rubber duck.