<br />
<b>Deprecated</b>:  The each() function is deprecated. This message will be suppressed on further calls in <b>/home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php</b> on line <b>456</b><br />
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hello on Meg Risdal</title><link>https://www.meg.dev/</link><description>Recent content in Hello on Meg Risdal</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><managingEditor>hello@meg.dev (Meg Risdal)</managingEditor><webMaster>hello@meg.dev (Meg Risdal)</webMaster><lastBuildDate>Tue, 02 May 2023 21:57:41 -0400</lastBuildDate><atom:link href="https://www.meg.dev/feed.xml" rel="self" type="application/rss+xml"/><item><title>I'm into spin now</title><link>https://www.meg.dev/posts/spin/</link><pubDate>Tue, 02 May 2023 21:57:41 -0400</pubDate><author>hello@meg.dev (Meg Risdal)</author><guid>https://www.meg.dev/posts/spin/</guid><description>&lt;p>Microblogging on Twitter is so out now, so I&amp;rsquo;m going to longblog here with a quick life update. I&amp;rsquo;m a spin girl now. I had been looking for more exercise activities to complement the workouts I do with my personal trainer. I was initially very nervous, mainly about how loud it would be.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">I&amp;#39;m thinking of doing a spin class. Are they always unbelievably loud?&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1644464691031445506?ref_src=twsrc%5Etfw">April 7, 2023&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;p>And people on Twitter indeed reassured me it would be unbelievably loud.&lt;/p>
&lt;p>But, I recently signed up for a two week unlimited trial at a studio across the street from me in downtown Toronto and much to my surprise I was hooked after just one class. It was for sure unbelievably loud (I wore earplugs) and I&amp;rsquo;m not super into the music alone, but I felt euphoric after the 50 minute session. The endorphin high was real. I went home (drenched in sweat) and immediately booked another class.&lt;/p>
&lt;p>Now I&amp;rsquo;ve taken five classes in the past week or so (some days doubling up with strength training which is intense) and I feel like I&amp;rsquo;ve already fully assimilated spin into my personality. I bought a new fancy water bottle, got a Fitbit, and now I&amp;rsquo;m blogging about it.&lt;/p>
&lt;p>I&amp;rsquo;ll definitely never become a spin instructor. Sometimes I&amp;rsquo;m shocked that I studied music performance at a conservatory &amp;ndash; you&amp;rsquo;d think I&amp;rsquo;d be able to move to a beat with some ease. Not consistently the case. And I can&amp;rsquo;t do some twisting or side-to-side motions due to my spinal fusion. Nonetheless, I think I can say I want to be a spin girl for life!&lt;/p></description></item><item><title>Using KerasCV and Stable Diffusion 2 for podcast artwork</title><link>https://www.meg.dev/posts/kerascv-image-gen-canto-pod/</link><pubDate>Sun, 29 Jan 2023 12:25:31 -0500</pubDate><author>hello@meg.dev (Meg Risdal)</author><guid>https://www.meg.dev/posts/kerascv-image-gen-canto-pod/</guid><description>&lt;p>A few weeks ago I wrote about &lt;a href="https://www.meg.dev/posts/micro-canto-pod/">how I made a micro Canto pod&lt;/a>. In this blog post, I&amp;rsquo;ll share how I recently updated my workflow to use KerasCV with Stable Diffusion 2 to generate the artwork for each episode. Previously, I was using Hugging Face Diffusers.&lt;/p>
&lt;h2 id="using-the-kerascv-implementation-of-stable-diffusion-2">Using the KerasCV implementation of Stable Diffusion 2&lt;/h2>
&lt;p>This will be a very short blog post because using &lt;code>KerasCV&lt;/code> was very easy especially because my use case is pretty simple.&lt;/p>
&lt;p>I started by following this &lt;a href="https://keras.io/guides/keras_cv/generate_images_with_stable_diffusion/">High-performance image generation using Stable Diffusion in KerasCV guide&lt;/a> in a Colab notebook. In Colab, you need to pip / apt install a couple of things before importing libraries.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="err">!&lt;/span>&lt;span class="n">pip&lt;/span> &lt;span class="n">install&lt;/span> &lt;span class="n">tensorflow&lt;/span> &lt;span class="n">keras_cv&lt;/span> &lt;span class="o">--&lt;/span>&lt;span class="n">upgrade&lt;/span> &lt;span class="o">--&lt;/span>&lt;span class="n">quiet&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">!&lt;/span>&lt;span class="n">apt&lt;/span> &lt;span class="n">install&lt;/span> &lt;span class="o">--&lt;/span>&lt;span class="n">allow&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">change&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">held&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">packages&lt;/span> &lt;span class="n">libcudnn8&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mf">8.1.0.77&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="o">+&lt;/span>&lt;span class="n">cuda11&lt;/span>&lt;span class="mf">.2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">time&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">keras_cv&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">tensorflow&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">keras&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">matplotlib.pyplot&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">plt&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>And then you can instantiate the Stable Diffusion 2 model. Note that in the guide, you&amp;rsquo;ll see &lt;code>keras_cv.models.StableDiffusion&lt;/code> used here. To update this to Stable Diffusion 2, I simply change this to &lt;code>keras_cv.models.StableDiffusionV2&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">model&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">keras_cv&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">models&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">StableDiffusionV2&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">img_width&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">512&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">img_height&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">512&lt;/span>&lt;span class="p">)&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>I decided to use Colab forms to give myself some consistent prompt options in addition to the option of creating one from scratch.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#@title Enter or select a prompt&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">prompt&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;painting of flowers and a rabbit on a red background, ancient chinese art style&amp;#39;&lt;/span> &lt;span class="c1">#@param [&amp;#34;red and gold flowers and a white rabbit, ancient chinese art style&amp;#34;, &amp;#34;red flowers, gold filigree, and a rabbit, ancient chinese art style&amp;#34;, &amp;#34;painting of flower and a rabbit on a red background, ancient chinese art style&amp;#34;] {allow-input: true}&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>With the model instatiated and my prompt chosen, in just a couple of lines I can generate some artwork for my podcast!&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">images&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">model&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">text_to_image&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">prompt&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">batch_size&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">5&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Plot and save all of the images&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">plot_images&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">images&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">images&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">figure&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">figsize&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">15&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">15&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">imshow&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">axis&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;off&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">savefig&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;rabbit_&lt;/span>&lt;span class="si">{}&lt;/span>&lt;span class="s1">.png&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">format&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">str&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">uuid&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">uuid4&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">hex&lt;/span>&lt;span class="p">)[:&lt;/span>&lt;span class="mi">9&lt;/span>&lt;span class="p">]))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">plot_images&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">images&lt;/span>&lt;span class="p">)&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>This creates and prints five generated images like the one below:&lt;/p>
&lt;figure>&lt;img src="https://www.meg.dev/images/rabbit-kerascv-sd2.png" width="60%"/>
&lt;/figure>
&lt;p>After this, I save all of the images to a Google Drive folder. I like to be able to hand pick the ones I like most to add to &lt;a href="https://www.meg.dev/pages/cantonese/">my Streamlit app&lt;/a> that I use to actually make the &amp;ldquo;podcasts&amp;rdquo; (i.e., Instagram Reels). It would be nice to really quickly create an image on demand whenever I create a new episode, but that&amp;rsquo;s a bit beyond what I want to spend my personal time (and money) on and this workflow works fine for me.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">path_to_files&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;rabbits&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">folder_id&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;1CL1WE3INkPB-ektGNsXSC2hCPuczEeM1&amp;#34;&lt;/span> &lt;span class="c1"># the folder where I want to save the generated images&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Using https://colab.research.google.com/notebooks/io.ipynb#scrollTo=jRQ5_yMcqJiV&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">upload_images_to_drive&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">path_to_files&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">folder_id&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">file&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">listdir&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">path_to_files&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">file_metadata&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;name&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">file&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;mimeType&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;image/png&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;parents&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">folder_id&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">media&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">MediaFileUpload&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">path_to_files&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="s2">&amp;#34;/&amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">file&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">mimetype&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;image/png&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">resumable&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">created&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">drive_service&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">files&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">create&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">body&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">file_metadata&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">media_body&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">media&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fields&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;id&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">execute&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">upload_images_to_drive&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">path_to_files&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">folder_id&lt;/span>&lt;span class="p">)&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>All in all, the only annoying part for me was figuring out how to manage Google Drive files in Colab. It&amp;rsquo;s incredible how accessible generative modeling tools are by contrast. In fact, at one point I asked ChatGPT for help. ;)&lt;/p>
&lt;p>My use case is pretty basic, but for more advanced applications and pipelines, there are some nice benefits of using the KerasCV implementation of Stable Diffusion beyond its utter ease-of-use. From the guide, depending on your setup, the KerasCV Stable Diffusion model can run orders of magnitude faster than its PyTorch counterpart. This is thanks to its graph mode execution, XLA compilation, and support for mixed precision computation. Note that the guide was written in Sept 2022 and I used Stable Diffusion V2 instead of V1.&lt;/p>
&lt;p>Maybe next I&amp;rsquo;ll see if I can get it working on my new M1 Macbook that I just got last week (but Colab is pretty convenient for my purpose). :)&lt;/p>
&lt;h2 id="check-out-the-full-notebook">Check out the full notebook&lt;/h2>
&lt;p>You can see my whole notebook below and open it up in Colab to try it out yourself.&lt;/p>
&lt;script src="https://gist.github.com/mrisdal/9fd711fe02be5937e53b6e11a9e73264.js">&lt;/script>
&lt;p>&amp;ndash;&lt;/p>
&lt;h2 id="reply">Reply&lt;/h2>
&lt;p>Share your thoughts by replying on Twitter&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">Here&amp;#39;s a blog post with my notebook &lt;a href="https://t.co/fRf5qwzjVm">https://t.co/fRf5qwzjVm&lt;/a>&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1619774969977925632?ref_src=twsrc%5Etfw">January 29, 2023&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script></description></item><item><title>My Year in Review, 2022</title><link>https://www.meg.dev/posts/my-2022/</link><pubDate>Sat, 31 Dec 2022 10:12:22 -0500</pubDate><author>hello@meg.dev (Meg Risdal)</author><guid>https://www.meg.dev/posts/my-2022/</guid><description>&lt;p>This was a good year. I said last year that Toronto would define my 2022 and I think it did. But, it was also a year where I spent a lot of time on self improvement and well being. Here&amp;rsquo;s some highlights:&lt;/p>
&lt;ul>
&lt;li>After a couple of months of packing and preparing, I moved myself and my cat Max from Los Angeles to an apartment with my partner in downtown Toronto! And I really, really love living here.&lt;/li>
&lt;li>I started working with a personal trainer. I had major spine surgery about ten years ago which has made me very inflexible (all of my thoracic vertebrae are fused) and since then I&amp;rsquo;ve been afraid of injuring myself while working out. A personal trainer has been an amazing way to get back in shape safely, and it&amp;rsquo;s also nice having some regular habit that gets me moving and doing stuff. In fact, I just spent the last day of 2022 (today) at a &amp;ldquo;glute camp&amp;rdquo; at my gym. Feeling spaghettified, in a good way!&lt;/li>
&lt;li>I&amp;rsquo;ve gone all-in on learning Cantonese which has been super fun. I started with taking a weekly class at the University of Toronto (which I resume again in the new year) and I&amp;rsquo;ve recently started working with a 1:1 tutor. My Cantonese-speaking boyfriend has been super supportive. It&amp;rsquo;s tough to learn especially since I can&amp;rsquo;t read, but very rewarding so far!&lt;/li>
&lt;li>My kitchen is really nice so I&amp;rsquo;ve been cooking quite a bit. I got an amazing deal on a Staub Dutch oven that I&amp;rsquo;m in love with. I also got a portable induction cooktop because I got frustrated with the electric stovetop in my apartment. I still miss gas, but the induction cooktop has been great.&lt;/li>
&lt;li>We made a few trips this year. Nothing too significant since I&amp;rsquo;m new to Toronto and we&amp;rsquo;re enjoying life here together. My boyfriend came to NYC with me during a work trip, we visited D.C. to see Beach House in concert with a friend, we visited my family in Minnesota over the summer, and we took the train to Montreal and Quebec City for some tourism. We were supposed to see my family again over the Christmas holiday, but we both got COVID so it&amp;rsquo;s postponed until January. In addition to NYC for work, I also traveled to Seattle.&lt;/li>
&lt;li>Work has been good. I successfully completed the paperwork on a ladder transfer which was a &lt;em>very&lt;/em> long time coming. I&amp;rsquo;m thankful to everyone who supported me through that. Right afterwards, I got promoted to L6 PM which was also nice (I took a huge pay cut to move to Canada, so the pay bumps are very welcome). I&amp;rsquo;ve been doing a lot of behind-the-scenes work and efforts to get more investments for Kaggle which have paid off, so I&amp;rsquo;m looking forward to some big changes in 2023.&lt;/li>
&lt;li>My divorce that I started last year was finalized. It&amp;rsquo;s a good feeling to close that chapter and I&amp;rsquo;m thankful that it was a smooth process.&lt;/li>
&lt;li>I&amp;rsquo;m making more and more progress towards becoming Canadian! After getting my work permit, I&amp;rsquo;ve just begun to assemble my documents to apply for permanent residence. One requirement was doing an English proficiency test which was kind of funny as a native English speaker. In a few years I&amp;rsquo;ll apply for citizenship!&lt;/li>
&lt;/ul>
&lt;p>With that, here&amp;rsquo;s the rest of my year-in-review!&lt;/p>
&lt;h2 id="top-film">Top film&lt;/h2>
&lt;h3 id="triangle-of-sadness-2022httpsletterboxdcomfilmtriangle-of-sadness">&lt;a href="https://letterboxd.com/film/triangle-of-sadness/">Triangle of Sadness (2022)&lt;/a>&lt;/h3>
&lt;p>Triangle of Sadness is like Zoolander, but made in a year that spilled a lot of digital ink hating on the uber wealthy class (e.g., Succession, White Lotus, Glass Onion, etc.). And I LOVE Zoolander AND all of these other TV shows and movies. It felt to me like Triangle of Sadness hasn&amp;rsquo;t gotten a lot of attention after winning the Palm d&amp;rsquo;Or this past summer, but I highly recommend it. It&amp;rsquo;s funny, unexpected, stunning, and the sound design is its own character entirely. It&amp;rsquo;s definitely a film that watches better with an audience in a theater with great sound, though.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/sWrS7f_nS9w" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;p>Some of my other highly rated movies from the past year:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://letterboxd.com/film/everything-everywhere-all-at-once/">Everything Everywhere All at Once (2022)&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://letterboxd.com/film/nope/">Nope (2022)&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://letterboxd.com/film/the-whale-2022/">The Whale (2022)&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>I&amp;rsquo;m glad that I was able to see all of these movies in a theater. I live about a 5 minute walk from a decent theater complex. It&amp;rsquo;s not quite the same as living in LA, but I&amp;rsquo;m satisfied! Mostly I miss Alamo Drafthouse. Toronto location when?&lt;/p>
&lt;p>I also spent a lot of December watching movies with my partner since we both got COVID and were stuck at home for a while. He&amp;rsquo;s more of a TV show person, so there&amp;rsquo;s a lot of movies he hasn&amp;rsquo;t seen, but I personally think he still has great taste. A couple of movies I was excited to introduce him to (and delighted that he loved) were &lt;a href="https://letterboxd.com/film/mulholland-drive/">Mulholland Drive (2001)&lt;/a> and &lt;a href="https://letterboxd.com/film/parasite-2019/">Parasite (2019)&lt;/a>.&lt;/p>
&lt;p>My &lt;a href="https://letterboxd.com/mrisdal/year/2022/">2022 stats are on Letterboxd&lt;/a> where you can see everything I watched and rated this year.&lt;/p>
&lt;h2 id="top-record">Top record&lt;/h2>
&lt;h3 id="closurecontinuation---porcupine-tree-2022httpsyoutubel420x9t1a6e">&lt;a href="https://youtu.be/l420X9T1a6E">Closure/Continuation - Porcupine Tree (2022)&lt;/a>&lt;/h3>
&lt;p>My favorite artist of all time is Steven Wilson of Porcupine Tree, but his band had been broken up since 2011. It was a huge surprise when Porcupine Tree announced a new studio album and tour. Last year their single from the new album was my song of the year, but now they&amp;rsquo;ve released the full album and completed their North American tour. I saw them with my partner in Toronto and it was one of my most memorable live music experiences ever. I&amp;rsquo;ve waited so long to see Porcupine Tree live and never thought I would!&lt;/p>
&lt;p>The whole album is great. So classically Porcupine Tree, yet still something new. Here&amp;rsquo;s one of my favorite songs from the new album:&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/LO0IV_qeZN4" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;p>Some other highlights this year were &lt;a href="https://youtu.be/EeJBDYoRW80">Carly Rae Jepsen&amp;rsquo;s The Loneliest Time (2022)&lt;/a> and &lt;a href="https://youtu.be/b7QlX3yR2xs">Taylor Swift&amp;rsquo;s Midnights (2022)&lt;/a>. It&amp;rsquo;s not really music I listen to, but my boyfriend does. And we put on their albums when we took a small roadtrip to Niagara-on-the-Lake and at home when we cook together.&lt;/p>
&lt;h2 id="top-tv-show">Top TV show&lt;/h2>
&lt;h3 id="succession-2018---httpsenwikipediaorgwikisuccession_tv_series">&lt;a href="https://en.wikipedia.org/wiki/Succession_(TV_series)">Succession (2018 - )&lt;/a>&lt;/h3>
&lt;p>I binge-watched Succession the first few months of the year. It got me through many days and weeks of packing and paperwork as I prepared for my move to Canada. I&amp;rsquo;m really looking forward to the upcoming new season, but this time I&amp;rsquo;ll have to watch while my partner is doing something else becaues he&amp;rsquo;s not a fan. ;)&lt;/p>
&lt;p>We did watch a fair bit of TV in 2022. Here are some other things I enjoyed at least somewhat:&lt;/p>
&lt;ul>
&lt;li>The Rehearsal&lt;/li>
&lt;li>White Lotus&lt;/li>
&lt;li>Sex Lives of College Girls&lt;/li>
&lt;li>The Bear&lt;/li>
&lt;li>The Morning Show&lt;/li>
&lt;li>Severance&lt;/li>
&lt;/ul>
&lt;p>I honestly wish I could rank &lt;em>The Rehearsal&lt;/em> as my top show. I think Nathan Fielder is a genius, but his new show just doesn&amp;rsquo;t have the same kind of staying power with me that &lt;em>Nathan for You&lt;/em> and &lt;em>Finding Frances&lt;/em> have.&lt;/p>
&lt;p>We also just started to watch &lt;em>Twin Peaks&lt;/em>. It&amp;rsquo;s a rewatch for me (so I can finally check out the third season!), but it&amp;rsquo;s my partner&amp;rsquo;s first viewing, so I&amp;rsquo;m excited for that in 2023.&lt;/p>
&lt;h2 id="game">Game&lt;/h2>
&lt;h3 id="genshin-impact">Genshin Impact&lt;/h3>
&lt;p>I don&amp;rsquo;t remember why I started playing Genshin Impact, but since starting I&amp;rsquo;ve discovered it&amp;rsquo;s the perfect game for me. It&amp;rsquo;s free, it initially feels a lot like Breath of the Wild (a very good thing), and I don&amp;rsquo;t really have an addictive personality so I can play very casually without buying into the gacha mechanics. I&amp;rsquo;ve even streamed it a couple of times on my Twitch.&lt;/p>
&lt;img src="https://www.meg.dev/images/genshin.jpg">
&lt;figcaption>Genshin Impact according to Stable Diffusion&lt;/figcaption>
&lt;p>I&amp;rsquo;ve also continued to play my favorites from last year: chess and Woogles (Scrabble). I even created another Woogles (Scrabble) &lt;a href="https://www.kaggle.com/competitions/scrabble-player-rating/overview">competition on Kaggle&lt;/a> to predict player ratings from gameplay data. The Wordle craze this year got me back into doing the NYT Crossword occasionally as well as Spelling Bee.&lt;/p>
&lt;h2 id="podcast">Podcast&lt;/h2>
&lt;h3 id="cantonese-sunday">Cantonese Sunday&lt;/h3>
&lt;p>Obviously I&amp;rsquo;ve been learning Cantonese, so I was looking for some Cantonese podcasts to listen to to kind of immerse myself in the language a bit. Most of the language learning ones I&amp;rsquo;ve found are shorter than what I was looking for. I stumbled upon this Cantonese radio show called Cantonese Sunday. I have no idea what they talk about, really, but I started listening to it. Sometimes I&amp;rsquo;ll listen to an episode multiple times just to try to pick up more words that I know. Listening comprehension is really hard! I&amp;rsquo;ll probably try to find more Cantonese podcasts for the new year.&lt;/p>
&lt;p>Otherwise I&amp;rsquo;ve kept listening to my usual slate of podcasts, but I also listen to them at night and lately I&amp;rsquo;ve been sleeping extremely well. I fall asleep within a few minutes every night. So I&amp;rsquo;ve absorbed less from the podcasts that I am listening to. Oh well! I&amp;rsquo;m happy to be sleeping so well these days.&lt;/p>
&lt;p>I have to end this blog post by giving an &amp;ldquo;honorable mention&amp;rdquo; to my own &amp;ldquo;micro&amp;rdquo; podcast that I started as a way to practice Cantonese. I wrote a &lt;a href="https://www.meg.dev/posts/micro-canto-pod/">blog post about it&lt;/a>. You can follow it on &lt;a href="https://www.instagram.com/meglearnscanto/">Instagram&lt;/a> or &lt;a href="https://twitter.com/MegLearnsCanto">Twitter&lt;/a>.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="zh" dir="ltr">Happy new year! 🎉 祝您新年快乐，身体建康! My cat makes the same expression as this rabbit. &lt;a href="https://t.co/qzFnhCl2MV">pic.twitter.com/qzFnhCl2MV&lt;/a>&lt;/p>&amp;mdash; Meg Learns Canto (@MegLearnsCanto) &lt;a href="https://twitter.com/MegLearnsCanto/status/1609241898438332416?ref_src=twsrc%5Etfw">December 31, 2022&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;p>祝您新年快乐, 身体健康! Happy New Year!&lt;/p>
&lt;p>&amp;ndash;&lt;/p>
&lt;h2 id="reply">Reply&lt;/h2>
&lt;p>Share your highlights by replying on Twitter&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">It&amp;#39;s early! Here&amp;#39;s my year-in-review. Happy new year, everyone! &lt;a href="https://t.co/kING2jBkgz">https://t.co/kING2jBkgz&lt;/a>&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1609257954141782016?ref_src=twsrc%5Etfw">December 31, 2022&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script></description></item><item><title>Why and how I made a micro Cantonese podcast</title><link>https://www.meg.dev/posts/micro-canto-pod/</link><pubDate>Wed, 28 Dec 2022 11:13:38 -0500</pubDate><author>hello@meg.dev (Meg Risdal)</author><guid>https://www.meg.dev/posts/micro-canto-pod/</guid><description>&lt;p>Right now I&amp;rsquo;m learning how to speak Cantonese. There are many strategies to learn a language, but using the language daily is one I hear often. This blog post is about the &amp;ldquo;micro Cantonese podcast&amp;rdquo; I&amp;rsquo;m starting on &lt;a href="https://www.instagram.com/meglearnscanto/">Instagram&lt;/a> as a way to force myself to practice Cantonese every day and how I automated its creation using Streamlit, &lt;code>ffmpeg&lt;/code>, and a Stable Diffusion model.&lt;/p>
&lt;h2 id="why-a-micro-podcast">Why a &amp;ldquo;micro&amp;rdquo; podcast?&lt;/h2>
&lt;p>The idea was inspired by my significant other. He&amp;rsquo;s been doing yoga for a while and recently he wanted to learn how to do a headstand. We decided to take video recordings so that he&amp;rsquo;d be able to create a compilation of his attempts which would show his progress over time from kicking me in the face to fully upright and unsupported.&lt;/p>
&lt;p>As I&amp;rsquo;ve been learning Cantonese, I figured a podcast would be a similar way for me to later appreciate how far I&amp;rsquo;ve come in my acquisition journey. It&amp;rsquo;ll probably take me (a lot) longer to learn decent Cantonese than it has for my boyfriend to learn how to do a headstand, but that&amp;rsquo;s okay.&lt;/p>
&lt;h2 id="how-a-micro-podcast">How a &amp;ldquo;micro&amp;rdquo; podcast?&lt;/h2>
&lt;p>Once I decided to use a podcast format to document my Cantonese language learning progress, I thought of a few requirements. It should be:&lt;/p>
&lt;ul>
&lt;li>Easy to create to remove any barriers that discourage me&lt;/li>
&lt;li>Readily indexed and accessible in one place so I can easily look back at old &amp;ldquo;episodes&amp;rdquo;&lt;/li>
&lt;li>Fun to make!&lt;/li>
&lt;/ul>
&lt;p>I settled on uploading (very short) recordings to Instagram as the most lightweight way to get started. Maybe I can aspire to create longer form podcasts when my Cantonese is better, but for now I figure a sentence or two is about right (~10-20 seconds).&lt;/p>
&lt;h3 id="prototyping">Prototyping&lt;/h3>
&lt;p>Prototyping involved several rounds of iterating on the idea. I first created a &amp;ldquo;prototype&amp;rdquo; by recording myself speaking in an Instagram story on my personal account. I quickly decided that I didn&amp;rsquo;t want to record my face every day. The audio on top of a static image seemed like an easy way to go, but in the spirit of wanting to have some fun, I thought a cute little waveform on top of the video would add some flair.&lt;/p>
&lt;p>I did a bit of searching to see if there were apps I could use to add an audio waveform on top of an image to create a video. I found this tool called Wavve which I tested out, but the free tier was really limiting. Here&amp;rsquo;s an example (which I also posted to my personal Instagram):&lt;/p>
&lt;video preload="auto" controls style="max-width: 60%; display: block; margin: auto;">
&lt;source src="https://www.meg.dev/videos/prototype_1.mp4" type="video/mp4">
There be a video here but your browser does not seem
to support it.
&lt;/video>
&lt;p>At this point, I remembered &lt;code>ffmpeg&lt;/code>. I had used this nice command line tool to process audio during my Master&amp;rsquo;s in linguistics (probably while I was doing a PhD, too). But, I needed to create my own images to overlay a waveform on top of. I was able to quickly create some images using a Stable Diffusion model from Hugging Face.&lt;/p>
&lt;p>Creating the waveform using &lt;code>ffmpeg&lt;/code> was fairly easy in two steps. First, I created a waveform from the audio file (&lt;code>png&lt;/code> is important so the background is transparent):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">ffmpeg -i audio.m4a -filter_complex &lt;span class="s2">&amp;#34;[0:a]showwaves=s=512x200:mode=cline:colors=White@0.75|Black@0.75:draw=full:scale=sqrt,format=rgba[v]&amp;#34;&lt;/span> -map &lt;span class="s2">&amp;#34;[v]&amp;#34;&lt;/span> -map 0:a -c:v png waveform.mp4&lt;span class="p">;&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Next, I take the resulting &lt;code>waveform.mp4&lt;/code> file and overlay it on top of an image to make a video:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">ffmpeg -i image.jpg -i ./input/audio/waveform.mp4 -filter_complex &lt;span class="s2">&amp;#34;[0:v][1:v] overlay=0:300&amp;#34;&lt;/span> -pix_fmt yuv420p -c:a copy ./output/canto-2022-12-21-video.mp4&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>This is what the result looked like:&lt;/p>
&lt;video preload="auto" controls style="max-width: 60%; display: block; margin: auto;">
&lt;source src="https://www.meg.dev/videos/prototype_2.mp4" type="video/mp4">
There be a video here but your browser does not seem
to support it.
&lt;/video>
&lt;p>Thanks to this prototyping, I had some idea of what I wanted the podcast to look like, but it was kind of a hassle to create &amp;ldquo;manually&amp;rdquo;. I realized I could automate a lot of these steps by using an app and doing so would definitely help me fulfill the &amp;ldquo;easy to create&amp;rdquo; requirement. I&amp;rsquo;m aware of &lt;a href="https://streamlit.io/">Streamlit&lt;/a> (they sponsored SLICED!), but I&amp;rsquo;d never personally used it before. Even though I&amp;rsquo;m not a Python person, this still felt like the right tool for the job so I got started.&lt;/p>
&lt;h3 id="creating-a-streamlit-app">Creating a Streamlit app&lt;/h3>
&lt;p>I began knowing that I wanted to start out with an MVP with some simple requirements for my Streamlit app:&lt;/p>
&lt;ol>
&lt;li>Accept an audio file&lt;/li>
&lt;li>Generate a downloadable video of the audio and its waveform overlaid on top of an image&lt;/li>
&lt;/ol>
&lt;p>Ready to begin coding everything up, I joked to my boyfriend that I was living the &amp;ldquo;draw the owl&amp;rdquo; meme. &amp;ldquo;Simply install Python on Windows&amp;rdquo;. Okay. Anyway, next I simply installed Python on my Windows laptop. Maybe you consider me basic at this point but I&amp;rsquo;ll remind you of two things:&lt;/p>
&lt;ol>
&lt;li>Imagine for a moment how much blood, tears, and sweat I&amp;rsquo;ve saved data scientists around the world by offering a fully managed Python Docker image on Kaggle, the product I work on&lt;/li>
&lt;li>I just attended &lt;a href="https://normconf.com/">#NormConf&lt;/a> a few weeks ago, so I know the struggles are real!&lt;/li>
&lt;/ol>
&lt;p>With Python installed, I could begin! Not knowing much Python or Streamlit, I figured the best way to get a grip on things would be to find simple, publicly available examples that I could take inspiration from. I found &lt;a href="https://bgremoval.streamlit.app/">this app&lt;/a> which looked very simple and did many of the things I wanted to do: 1) it accepted a user uploaded file; 2) used that file to generate some other output. Browsing &lt;a href="https://github.com/tyler-simons/BackgroundRemoval">their code&lt;/a> helped me learn a lot about how Streamlit works.&lt;/p>
&lt;p>Finally, I began creating my MVP app! I won&amp;rsquo;t go into details of the code here, but you can &lt;a href="https://github.com/mrisdal/canto-podcast-creator">check out the code on my GitHub&lt;/a>.&lt;/p>
&lt;p>Creating the MVP was quite easy. But, once I had something basic working, I wanted to make at least one additional improvement: instead of a single background image, I wanted to be able to select from a set of possible images. I thought this might be a Streamlit component that I could use out-of-the-box, but it wasn&amp;rsquo;t. Fortunately, I found someone else, &lt;a href="https://github.com/jrieke">Johannes Rieke&lt;/a> (a Streamlit product manager), had created a &lt;a href="https://github.com/jrieke/streamlit-image-select">custom image selector component&lt;/a>. From there, it was simply a matter of using the custom component to add an image selection UI and creating a small library of images (again using Stable Diffusion hosted on Hugging Face).&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Select a background image&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">st&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">write&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;## Step 2. Choose a background image&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">backgrounds&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="n">path&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">listdir&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">background_input_path&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Check if current path is a file and add it to a list&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># All the files here should be images. They don&amp;#39;t need to be the same size, but ideally they&amp;#39;re square&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isfile&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">background_input_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">path&lt;/span>&lt;span class="p">)):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">backgrounds&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">background_input_path&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">path&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Image selector widget&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">selected_image&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">image_select&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Background choices&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">backgrounds&lt;/span>&lt;span class="p">)&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>The resulting app is embedded below and &lt;a href="https://mrisdal-canto-podcast-creator-create-podcast-oselu7.streamlit.app/">available at this link&lt;/a>. I also added it to a tab called Cantonese on my own website so I can easily access it from my phone where I make the recordings.&lt;/p>
&lt;iframe
src="https://mrisdal-canto-podcast-creator-create-podcast-oselu7.streamlit.app/?embedded=true"
title="iframed content"
height="600"
frameborder="0"
marginwidth="0"
marginheight="0"
scrolling="no"
style="border: 1px solid #CCC; border-width: 1px; margin-bottom: 20px; width: 100%;"
allowfullscreen="true">
&lt;/iframe>
&lt;p>There&amp;rsquo;s a few other ways I briefly explored extending the app before I called everything done. Here&amp;rsquo;s what I didn&amp;rsquo;t do:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Use a pre-trained model to generate new background images on the fly&lt;/strong>. I decided the expense wasn&amp;rsquo;t worth it as this would require I pay some hosting provider to make inference calls. Instead I&amp;rsquo;ll have to manually refresh the images from time-to-time, but for now I find this acceptable.&lt;/li>
&lt;li>&lt;strong>Create transcripts&lt;/strong>. I briefly looked into using Google&amp;rsquo;s Translation API to to create HK Cantonese &amp;ndash;&amp;gt; English transcripts which I could use either as captions for my Instagram posts or within the videos themselves. Similarly, I decided I didn&amp;rsquo;t want to bother paying for this. Plus, since I can&amp;rsquo;t read Chinese characters I&amp;rsquo;d have no way to verify their accuracy (risky since I&amp;rsquo;m obviously a beginning learner, not a native speaker).&lt;/li>
&lt;/ul>
&lt;h2 id="launch">Launch!&lt;/h2>
&lt;p>With my Cantonese podcast app ready, I now have zero excuses! I can easily create short, visually appealing videos for my Instagram every day to help me learn and record progress. I &amp;ldquo;launched&amp;rdquo; the app by creating an &lt;a href="https://www.instagram.com/meglearnscanto/">Instagram &lt;code>meglearnscanto&lt;/code>&lt;/a> and lightly promoting it so that I felt like I had some kind of friendly audience, even if small.&lt;/p>
&lt;video preload="auto" controls style="max-width: 60%; display: block; margin: auto;">
&lt;source src="https://www.meg.dev/videos/final_1.mp4" type="video/mp4">
There be a video here but your browser does not seem
to support it.
&lt;/video>
&lt;p>Thank you for reading! I&amp;rsquo;d also like to thank my boyfriend for his support and inspiration as well as folks on Streamlit&amp;rsquo;s forums who helped me with some troubleshooting.&lt;/p>
&lt;p>P.S. If you&amp;rsquo;re wondering what&amp;rsquo;s with all the rabbits it&amp;rsquo;s beause my birthyear is 1987, year of the rabbit. The next year of the rabbit begins in 2023!&lt;/p>
&lt;p>&amp;ndash;&lt;/p>
&lt;h2 id="reply">Reply&lt;/h2>
&lt;p>Follow the conversation on Twitter.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">I wrote about why and how I created my &amp;quot;micro Cantonese podcast&amp;quot; &lt;a href="https://t.co/Ooyu3KyJ1t">https://t.co/Ooyu3KyJ1t&lt;/a>&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1608566221263503361?ref_src=twsrc%5Etfw">December 29, 2022&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;p>&lt;em>I created this post&amp;rsquo;s banner image by using another fun CLI tool, ImageMagick, to mash together three images generated by a Stable Diffusion model&lt;/em>&lt;/p></description></item><item><title>All of the recommendations</title><link>https://www.meg.dev/posts/recommendations/</link><pubDate>Fri, 23 Dec 2022 20:17:10 -0500</pubDate><author>hello@meg.dev (Meg Risdal)</author><guid>https://www.meg.dev/posts/recommendations/</guid><description>&lt;p>It&amp;rsquo;s been almost a year since my last blog post which means it&amp;rsquo;s nearly time for my annual &amp;ldquo;year-in-review&amp;rdquo; post. But I want this blog to be more than just my year in review. So before I get to that, I would like to share with you some recommendations. All of them.&lt;/p>
&lt;p>Twitter is like a human Chat GPT at scale. I tweet something (a prompt) and magically many, sometimes lots of people start responding to my prompt. Once I asked the entire internet for recommendations. Recommendations about anything. And I got a lot of great stuff in return. The tweet ended up attracting over 500,000 impressions, 358 replies, and 69 quote retweets.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">I need recommendations. Just send me whatever recommendations you have about anything.&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1420521459982606336?ref_src=twsrc%5Etfw">July 28, 2021&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;p>So in this blog post I&amp;rsquo;ll share some favorite replies from this MVT (&amp;ldquo;most valuable tweet&amp;rdquo;). Now really couldn&amp;rsquo;t be a better time to celebrate what makes Twitter magic. The people and the ways we can collectively improve one another&amp;rsquo;s lives through sharing.&lt;/p>
&lt;h2 id="lifehacks">Lifehacks&lt;/h2>
&lt;p>&lt;strong>Sunscreen&lt;/strong> was a common recommendation. Like, just wearing any sunscreen. I&amp;rsquo;d always been okay at wearing sunscreen, but after this I actually ended up making it a real daily habit. So, Twitter changed my life! And has maybe saved my skin? Also up there with sunscreen was &lt;strong>drink more water&lt;/strong>.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">Wear sunscreen.&lt;/p>&amp;mdash; Wesley Miller (@getwired) &lt;a href="https://twitter.com/getwired/status/1420537575316475904?ref_src=twsrc%5Etfw">July 29, 2021&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;p>Using apps to get &lt;strong>free access to books&lt;/strong>! Which I guess you could use to check out some of the books people recommended to me in the thread.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">Read books on your eReader or tablet for free with the Libby app! &lt;br>&lt;br>You enter your library card number, and it lets you check out your library’s ebook collection and send directly to your kindle or other device. I’ve easily saved several thousand $ in books this way.&lt;/p>&amp;mdash; Mai Nguyen, PhD (@mai_lin_nguyen) &lt;a href="https://twitter.com/mai_lin_nguyen/status/1420814723772207109?ref_src=twsrc%5Etfw">July 29, 2021&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;p>Some people smashed together multiple lifehacks into one recommendation like this person who recommends &lt;strong>stretching occasionally&lt;/strong> and &lt;strong>splurging on a mattress&lt;/strong> (I totally agree).&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">3 recommendations , even if you have a nice chair for working stretch your legs every hour or so. See the O show in vegas at the Bellagio and finally splurge when it comes to beds, bedding and mattresses you spend a lot of time in life sleeping, so it’s an easy win.&lt;/p>&amp;mdash; James Scheibel (@james_scheibel) &lt;a href="https://twitter.com/james_scheibel/status/1420605597179949058?ref_src=twsrc%5Etfw">July 29, 2021&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;p>Other recommendations included &lt;a href="https://twitter.com/balalaikagrunge/status/1420660057860153349">get a bicycle and ride it everywhere&lt;/a>, &lt;a href="https://twitter.com/Brophensteen/status/1420920640618467332">freezing all of your cheese-powdered snack foods&lt;/a>, &lt;a href="https://twitter.com/hisotalus/status/1420678675410964483">adopt two cats and a hamster&lt;/a>, and something about &lt;a href="https://twitter.com/nobletrout/status/1420814062858948616">posts, pylons, and concrete&lt;/a>.&lt;/p>
&lt;h2 id="food">Food&lt;/h2>
&lt;p>I got a LOT of food recommendations. Some of them oddly specific!&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">Bellwether Farms whole-milk Basket-Ricotta Cheese. Blend with a vanilla bean and sweetener, and it’s dessert to die for.&lt;/p>&amp;mdash; Allen Holub @allenholub@mstdn.social (@allenholub) &lt;a href="https://twitter.com/allenholub/status/1420523677838233605?ref_src=twsrc%5Etfw">July 28, 2021&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;p>Other food recommendations included:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://twitter.com/tjmahr/status/1420561843945414657">Little ham and Swiss cheese sliders on Hawaiian rolls&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/GabeSchenz/status/1420535327983296512">Cheese curds at the MN state fair&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/shadowbanned_/status/1420527000473665538">Hatch chile chocolate covered peanut candies&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/dwhdai/status/1420757513562120194">Growing and eating your own black cherry tomatoes and ground cherries&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/SnailMamma/status/1420529291129880578">Get grilled instead of raw onions at In &amp;rsquo;n&amp;rsquo; Out&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>I found the specificity oddly satisfying. I&amp;rsquo;d love to do a food-only recommendations thread sometime. It could be a great way to find new recipes or hopefully visually feast upon people&amp;rsquo;s creations. Love to take Instagram pictures of food I make.&lt;/p>
&lt;h2 id="media">Media&lt;/h2>
&lt;p>People recommended the following &lt;strong>movies and TV shows&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://twitter.com/nstamboglis/status/1420661093819617280?s=20&amp;amp;t=dmV5VhRNPABRCDiNa47D9g">The 7 Samurais by Akira Kurasawa&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/ChloeCondon/status/1420526132835753986">90 Day Fiance&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/databoydg/status/1420783839404695554">Killing Eve&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/ModernNadeshiko/status/1421409595142987781">Atypical&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/TartanLlama/status/1420786701174202381">The short film Light is Calling&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>And here&amp;rsquo;s one I waited too long to try out &amp;hellip; Bluey! I just got a Disney+ subscription so I can watch with Cantonese dubs.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">Bluey is the best kids TV show out there, watch it even if you don&amp;#39;t have kids.&lt;/p>&amp;mdash; Kornelis Sietsma (@kornys) &lt;a href="https://twitter.com/kornys/status/1420780398896877568?ref_src=twsrc%5Etfw">July 29, 2021&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;p>Some &lt;strong>books&lt;/strong>, too:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://twitter.com/davidasboth/status/1420669458415292417">John Dies at the End&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/JennaJrdn/status/1420557443692732417">All the books by Ilona Andrews&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/migueldeicaza/status/1420521870659571712">The Deficit Myth&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/polesasunder/status/1420593156387639303">Sci-fi novels by Becky Chambers&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/DrKashik/status/1420540509655867395">The Wee Free Men by Terry Pratchett&lt;/a> (or as another user replied, &amp;ldquo;everything by Terry Pratchett&amp;rdquo;)&lt;/li>
&lt;/ul>
&lt;h2 id="products">Products&lt;/h2>
&lt;p>A lot of people recommended &lt;a href="https://www.dyson.com/vacuum-cleaners/cordless/v11/shop-all">this vacuum&lt;/a>. Weirdly I ended up buying a similar one a few months later when I moved to Canada. My partner is allergic to my cat so we vacuum multiple times per day.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">THE DYSON CORDLESS VAC (as recommended to me by &lt;a href="https://twitter.com/dataandme?ref_src=twsrc%5Etfw">@dataandme&lt;/a>). Tony and I were JUST SAYING how good of a purchase it was despite being $600. We can&amp;#39;t go back.&lt;a href="https://t.co/iquwSEALgi">https://t.co/iquwSEALgi&lt;/a>&lt;/p>&amp;mdash; Chelsea Parlett-Pelleriti (@ChelseaParlett) &lt;a href="https://twitter.com/ChelseaParlett/status/1420563652613087236?ref_src=twsrc%5Etfw">July 29, 2021&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;p>Also, I still want &lt;a href="https://www.meaco.com/products/meacofan-1056-air-circulator">this fan&lt;/a>. Love a good fan!&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">&lt;a href="https://t.co/grVRiPjajZ">https://t.co/grVRiPjajZ&lt;/a>. This is out of stock everywhere but it’s worth waiting. Best £100 I’ve ever spent.&lt;/p>&amp;mdash; Simon Brunner (@SimonAHPInfo) &lt;a href="https://twitter.com/SimonAHPInfo/status/1420741192275304452?ref_src=twsrc%5Etfw">July 29, 2021&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;p>Here are some more products people recommended (I promise no affiliate links):&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://twitter.com/Nyarlathocon/status/1420949206974582789">Buy a dehumidifier&lt;/a> (did they mean humidifier?)&lt;/li>
&lt;li>&lt;a href="https://twitter.com/tmllr/status/1420568786705338368">Garmin 935 running watch&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/abaranov/status/1420527967717912577">Bitwarden password manager&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/adamlaiacano/status/1420531338801782785">Hybrid LED project light tool&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="hobbies">Hobbies&lt;/h2>
&lt;p>If you&amp;rsquo;re looking for something new to do, there&amp;rsquo;s a lot of good ideas shared. For example, someone recommended &lt;strong>tying knots&lt;/strong>. I assume as a hobby? I&amp;rsquo;m not sure!&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">Get a good knot-tying book and sensible rope to practice with (not natural fibers). Useful even if you’re not into climbing, sailing, fishing etc.&lt;/p>&amp;mdash; Jim Savage (@abiylfoyp) &lt;a href="https://twitter.com/abiylfoyp/status/1420568444362051587?ref_src=twsrc%5Etfw">July 29, 2021&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;p>Some other hobbies people recommended or gave me tips about:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://twitter.com/eamcvey/status/1420558601878392833">Mountain biking or trail running&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/wholemilk/status/1420793507690684416">Cross-stitch&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/ErinWestgate/status/1421019853054529539">Scalloping&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://twitter.com/rootpoint/status/1420757714402103316">Beekeeping&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="will-our-ai-overlords-replace-us">Will our AI overlords replace us?&lt;/h2>
&lt;p>So of course we have to end here. This is what Chat GPT had to say in response to my &amp;ldquo;recommendations&amp;rdquo; prompt:&lt;/p>
&lt;blockquote>
&lt;p>Sure! Here are a few recommendations:&lt;/p>
&lt;ol>
&lt;li>If you&amp;rsquo;re looking for a good book to read, I recommend &amp;ldquo;The Alchemist&amp;rdquo; by Paulo Coelho. It&amp;rsquo;s a beautifully written novel about a shepherd boy who embarks on a journey to find his personal legend.&lt;/li>
&lt;li>If you&amp;rsquo;re in the mood for a movie, I recommend &amp;ldquo;The Shawshank Redemption.&amp;rdquo; It&amp;rsquo;s a classic drama about hope, friendship, and the human spirit.&lt;/li>
&lt;li>If you enjoy listening to music, I recommend checking out the album &amp;ldquo;To Pimp a Butterfly&amp;rdquo; by Kendrick Lamar. It&amp;rsquo;s a groundbreaking work of hip hop that tackles themes of race, identity, and social justice.&lt;/li>
&lt;li>If you&amp;rsquo;re interested in trying out a new recipe, I recommend making a stir-fry. It&amp;rsquo;s a quick and easy dish that you can customize with your favorite vegetables and proteins.&lt;/li>
&lt;li>If you&amp;rsquo;re in need of some self-care, I recommend taking a relaxing bath with Epsom salt and essential oils. Epsom salt can help soothe muscle aches and improve circulation, while essential oils can help you relax and unwind.&lt;/li>
&lt;/ol>
&lt;p>I hope these recommendations are helpful! Let me know if you have any specific interests or needs, and I can provide more tailored recommendations.&lt;/p>
&lt;/blockquote>
&lt;p>Seems like not a terrible way to spend the rest of my holiday break sick with COVID. But it lacks heart and experience. I&amp;rsquo;ll continue to trust the wisdom of the human crowd (even though many people replied to this thread telling me not to trust people on the internet &amp;hellip;). Anyway, who (or what) will you trust? &lt;a href="https://twitter.com/MeganRisdal/status/1420521459982606336">Check out the tweet&lt;/a> for all of the recommendations.&lt;/p>
&lt;p>&amp;ndash;&lt;/p>
&lt;h2 id="reply">Reply&lt;/h2>
&lt;p>Follow the conversation on Twitter.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">I wrote a blog post so that my blog isn&amp;#39;t just an annual year-in-review blog. &lt;a href="https://t.co/HbvRxY0kEJ">https://t.co/HbvRxY0kEJ&lt;/a>&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1606462291700060160?ref_src=twsrc%5Etfw">December 24, 2022&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;p>&lt;em>Photo by &lt;a href="https://unsplash.com/@theasophie?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Thea&lt;/a> on &lt;a href="https://unsplash.com/s/photos/advice?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash&lt;/a>&lt;/em>&lt;/p></description></item><item><title>My Year in Review, 2021</title><link>https://www.meg.dev/posts/my-2021/</link><pubDate>Mon, 14 Feb 2022 22:49:00 -0800</pubDate><author>hello@meg.dev (Meg Risdal)</author><guid>https://www.meg.dev/posts/my-2021/</guid><description>&lt;h1 id="my-year-in-review-2021">My Year in Review, 2021&lt;/h1>
&lt;p>Welcome to my third annual Meg’s year-in-review post (see &lt;a href="https://mrisdal.github.io/blog/posts/my-2020/">2020&lt;/a> and &lt;a href="https://mrisdal.github.io/blog/posts/my-2019/">2019&lt;/a>) and what’s my first blog post in all of 2021. Eek. Haven’t made much time for writing, unfortunately; it’s been a much busier, happier year than 2020 was! Unlike 2020 which I spent in a monotonous, depressing “comfort zone” (the pandemic obviously didn’t help), this year I really took back control of my happiness. 10/10 recommend. Here are some highlights:&lt;/p>
&lt;ul>
&lt;li>Got a divorce! Thank you everyone who supported me through this. It was amicable.&lt;/li>
&lt;li>Saw friends in person again. Parties, hikes, movies, live music, plays, bars, lunches, dinners, travel.&lt;/li>
&lt;li>Finally I visited my family in Minnesota. And saw my parents in LA.&lt;/li>
&lt;li>Started to lead Product at Kaggle … for now. I declined an offer to be permanent Head of Product since I’m not keen to start people management as our team grows.&lt;/li>
&lt;li>Bought a new bike and started to exercise more regularly and go for walks every day (though lately hasn’t been great apart from some hikes–need to make a New Year’s resolution).&lt;/li>
&lt;li>Created and hosted a super successful data science game show called &lt;a href="https://towardsdatascience.com/three-reasons-to-watch-sliced-a-real-time-data-science-competition-8d5212ccf988">SLICED&lt;/a> on Twitch with my friend Nick Wan!&lt;/li>
&lt;li>Met a Canadian from my Among Us gaming group (thanks &lt;a href="https://twitter.com/nickwan">Nick&lt;/a>!) and fell completely in love. I’ve honestly never been happier or felt luckier.&lt;/li>
&lt;li>Visited Toronto (twice) and Banff and made even more future plans to travel and be together with this person.&lt;/li>
&lt;li>Started to play chess (umm, but now only puzzles), Scrabble, and learn Japanese on Duolingo as well as Cantonese with my new partner.&lt;/li>
&lt;li>I stopped drinking so much alcohol. I haven’t stopped drinking completely, but I used to keep beer at home and drink most days and now I don’t do that. I can’t say I feel any different, but it still feels like a healthy choice regardless.&lt;/li>
&lt;li>And the final big one: I decided to move to Toronto! When I moved to LA in 2017, I thought it could be forever. But through the fires in the summer of 2020, I began to feel I couldn&amp;rsquo;t make it my permanent home. Still, I&amp;rsquo;m moving sooner than expected, but I&amp;rsquo;m following my heart (and bringing my mind with me). Toronto will define my 2022.&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Note: Sorry this post is so late!&lt;/em>&lt;/p>
&lt;h2 id="top-film">Top film&lt;/h2>
&lt;h3 id="titane-2021">Titane (2021)&lt;/h3>
&lt;p>&lt;strong>&lt;a href="https://letterboxd.com/film/titane/">Titane (2021)&lt;/a>&lt;/strong> was this year’s Palme d’or winner and Meg’s most highly anticipated movie of the year. It premiered in LA when I was in Toronto and it played at the Toronto International Film Festival when I was in LA, so it kept escaping me but I finally managed to see it at The Alamo Drafthouse in DTLA. The director, Julia Ducournau, also directed &lt;a href="https://letterboxd.com/film/raw-2016/">Raw (2016)&lt;/a> which I saw and absolutely loved when I lived in Pittsburgh, PA. An elderly couple walked out of the theater during a particularly intense scene and I was craving the same corporeal sexual shock in her latest film Titane. It was very satisfying and unexpectedly heartwarming and funny (honestly, I thought there would be more sex with cars in the movie, though). Anyway, I knew I’d love the movie straight away when it began with the main protagonist murdering a man who attempted to sexually assault her.&lt;/p>
&lt;p>Other movies that were highlights this year:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://letterboxd.com/film/dune-2021/">Dune (2021)&lt;/a>&lt;/strong> which I saw with my parents when they visited me in LA. I got tickets to see it at the TCL Chinese Theater IMAX. My mom wanted to see a director’s Q&amp;amp;A, but this is the best I could manage (there was a director’s Q&amp;amp;A a couple of weeks later, sigh).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://letterboxd.com/film/booksmart/">Booksmart (2019)&lt;/a>&lt;/strong> is a movie I’ve seen 3 or 4 times at this point. It’s perfect?! It’s on my list because some of us from the Among Us gaming group started watching movies together and we picked this one weekend. I was desperate for my boyfriend to watch it with us because I knew he’d love it. And he did, which made me so happy.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>I still watched &lt;strong>&lt;a href="https://letterboxd.com/film/akira/">Akira (1988)&lt;/a>&lt;/strong> a ton this year (it was my “movie of the year” last year), so it’s still on my list as a highlight of course.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="top-record">Top record&lt;/h2>
&lt;p>Honestly I didn’t listen to much new music this year, sorry. I did get to see some live music this year, though, which was great. So I’m going to cheat and write about that instead.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Ween&lt;/strong>. Ween is special to me because I first listened to them while on a week-long road trip with my sister in Australia. Her new boyfriend at the time (they’re still together!) made us a “mixtape” for our car ride that featured a lot of Ween. So it’s like our sister thing now. We saw them in St. Paul, MN in 2018. This past August we saw them again at Surly Brewing also in Minnesota. It was amazing. I remember the feeling of buying the tickets back in February 2021 before getting vaccinated. The founded optimism was such an incredible feeling. And it was made even more gratifying when it actually came to fruition.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Deafheaven&lt;/strong>. I saw Deafheaven in 2019 in LA and I was excited to see them again at The Ace Hotel in DTLA this past fall. I went by myself. The venue was totally gorgeous, would definitely go back. The show was okay. Can’t say I adore their 100% clean vocal thing as they played every song from their new album, Infinite Granite. But hey I’ll take pretty much any live music at this point.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Dead and Company&lt;/strong>. My parents came to visit LA so they could see Dead and Company at The Hollywood Bowl for three nights on Halloween weekend. This was a “bucket list” experience for my dad so that was special. If you don’t know, my dad is an enormous Deadhead. I was invited to join him for one of the nights which was fun. Definitely a nostalgia thing for me since I grew up listening to The Dead.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Opeth&lt;/strong>. The last music I saw in 2021 was Opeth at The Palladium in December just a couple days after getting back from Banff, Alberta. I caught up with a friend beforehand at the same bar we went to before their last LA show immediately before the pandemic lockdown. So we were a bit nervous about triggering a Groundhog Day effect (uhh, I even wore the same outfit as in 2020).&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="top-song">Top song&lt;/h2>
&lt;p>Okay, let’s go. My favorite band, &lt;a href="https://porcupinetree.com/">Porcupine Tree&lt;/a>, is reuniting and I couldn’t be happier about it. I got into them around 2006 and they broke up just a few years later. I never got to see them live (although I have seen Steven Wilson live a few times). They put out a single, Harridan, which to be honest is so good. It’s genuine Porcupine Tree and it’s making me so hyped for an album and upcoming tour.&lt;/p>
&lt;pre>&lt;code>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/AW5v4Ohxk5k" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;/code>&lt;/pre>
&lt;h2 id="top-book">Top book&lt;/h2>
&lt;p>I, uhh, didn’t really read any good books in 2021. A few years ago I switched to audiobooks which hugely increased the number of books I would “read”. But ever since I stopped commuting to work, I’ve listened to far fewer audiobooks. I’ve also completely swapped to listening to podcasts before bed each night. So yeah. I canceled my Audible subscription.&lt;/p>
&lt;h2 id="top-game">Top game&lt;/h2>
&lt;p>This year’s top game has to go to a classic: Scrabble! I played a lot more games this year compared to the previous year, so it was hard to choose. Scrabble was also a late entry to 2021. My partner and I just started playing together in September or so after I put out a call on Twitter for non-ad-riddled Scrabble apps and discovered &lt;a href="https://woogles.io/">Woogles.io&lt;/a>. It’s basically chess.com but for Scrabble and we love it. We play every night and it’s a perfect long-distance relationship ritual. He’s also the first guy I’ve dated who can beat me, which I’m going to interpret as being romantically significant. We even collaborated on a project to use their undocumented API to grab our game data and analyze it. This turned into a Community Competition on Kaggle: &lt;a href="https://www.kaggle.com/c/scrabble-point-value">Scrabble Point Value&lt;/a>. Basically, it’s brought me a ton of joy this year.&lt;/p>
&lt;p>Other top games for me in 2021:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Among Us&lt;/strong>. I picked this as my game of the year last year and honestly I was tempted to pick it again this year. At the very end of 2020 I had just started to play at work and maybe once or twice with this gaming group online. But it was really this year that we played a ton (every Saturday for a solid half year). Plus, me and the guy I’m now dating even hand-tracked our game stats to analyze later and obviously it’s how we met in the first place. I never thought I’d meet someone and fall in love online playing a video game. What is this, 2008? Anyway, Among Us will always have a special place in my heart now.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Cyberpunk 2077&lt;/strong>. Yes, I played this game on my Stadia when it came out and had zero issues, sucker! I’m actually replaying this right now. It’s totally … okay? It’s fine. That’s right, I still use my Stadia.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>It Takes Two&lt;/strong>. Me and my friend Nick played this around the time that we were working on SLICED! It’s super cute and creative and a lot of fun. And it just won Game of the Year at The Game Awards!&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Chess&lt;/strong>. Also another super classic that I got back into during the pandemic. Briefly I got into playing some actual games, but I’ll be honest I found it extremely anxiety-inducing and couldn’t handle it. So now I just do chess puzzles which I love. My boyfriend is also into chess and we puzzle battle just about every single day, too. I’ve even beaten him a few times!&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="top-podcast-sort-of">Top podcast (sort of)&lt;/h2>
&lt;p>I’ve listened to more podcasts in 2021 than any year prior. I’ve mostly kept the same things as past years in my rotation: Darknet Diaries, Daniel and Jorge Explain the Universe, Sean Carroll’s Mindscape, 99% Invisible, and Stuff You Should Know, for example. To this, I’ve added a number of relationship / romantic podcasts which I won’t list here. But I did have a couple of podcast serials I listened to which I can recommend:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://crooked.com/podcast-series/wind-of-change/">Wind of Change&lt;/a>&lt;/strong>. This came out in 2020, but I listened to it in 2021 (haha pretty sure?). It’s an investigation into the theory that the 1990s power ballad “Wind of Change” by Scorpion was written by the CIA during the collapse of the Soviet Union to be the anthem for the revolution during the collapse of the Soviet Union. If you like this, there’s also a cool Radiolab episode in their Mixtape series about the introduction of contemporary western music to China via Dakou, plastic scraps of trashed cassettes refurbished.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&lt;a href="https://wondery.com/shows/operator/">Operator&lt;/a>&lt;/strong>. I’m listening to this right now. It’s about the rise and fall of the sex operator industry titan, American Telnet. There’s so many facets to this that make it a really fascinating story: marginalization of sex work, their technological innovations, and, well, another classic story of capitalist scandal and demise.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="top-tv-show">Top TV show&lt;/h2>
&lt;p>I also didn’t watch a ton of TV this year. Even more so than movies, I found I simply didn’t have the time or attention span to dedicate to an entire series. I could do 90 minutes here and there, but not three seasons of Succession (just kidding, I just started watching this). So most of my enjoyment came from more lighthearted, bite-sized affairs. This makes I Think You Should Leave (Season 2) my top pick for 2021. It’s so weird and brings me so much joy. If I can’t decide what to watch sometimes I just put on old episodes for comfort. How the jokes and language permeate my everyday thoughts has also been really satisfying.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/7xS9Y_mjTjc" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;p>Other highlights include:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Pen15&lt;/strong>. The creators and main characters of this show are pretty much exactly the same age as I am so this show is a major flashback to 5th grade for me. Its balance of levity and heartfelt sincerity are so wonderful especially in the latest season where they confront more serious topics.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Married at First Sight&lt;/strong>. You might call this my guilty pleasure show. I’ve kind of given up on 90 Day Fiance in favor of MAFS full time. I just love the combination of romance and a social experiment like marrying a stranger at first sight. Another pandemic highlight for me, for example, was Love is Blind (go Cameron and Lauren forever!).&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&amp;ndash;&lt;/p>
&lt;h2 id="reply">Reply&lt;/h2>
&lt;p>Follow the conversation and discuss your favs on Twitter.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">Here&amp;#39;s my 2020 year in review where I talk about my fav movies, music, games, etc. &lt;a href="https://t.co/oUHQSC9aTo">https://t.co/oUHQSC9aTo&lt;/a>&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1345895617139073024?ref_src=twsrc%5Etfw">January 4, 2021&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script></description></item><item><title>My Year in Review, 2020</title><link>https://www.meg.dev/posts/my-2020/</link><pubDate>Sun, 03 Jan 2021 02:29:15 -0500</pubDate><author>hello@meg.dev (Meg Risdal)</author><guid>https://www.meg.dev/posts/my-2020/</guid><description>&lt;p>This is my second year-in-review post &lt;a href="https://mrisdal.github.io/blog/posts/my-2019/">see my 2019 post&lt;/a>. This year was much shittier than last year. That&amp;rsquo;s partly my fault and partly the fault of the pandemic, my bike getting stolen, etc. etc. So I think I spent most of this year in a &amp;ldquo;comfort zone&amp;rdquo; which was somewhat depressing and monotonous. There were some bright spots, though:&lt;/p>
&lt;ul>
&lt;li>I started my new (old) job back at Kaggle which has been good&lt;/li>
&lt;li>My husband and I took a lovely vacation to Hawaii right before the pandemic hit&lt;/li>
&lt;li>I started cooking a lot more and haven&amp;rsquo;t gotten totally sick of it yet&lt;/li>
&lt;li>&lt;a href="https://twitter.com/MeganRisdal/status/1344482197999288323?s=20">I began doing something like mentoring semi-regularly&lt;/a>&lt;/li>
&lt;li>I&amp;rsquo;ve improved a lot at disconnecting from work&lt;/li>
&lt;li>I&amp;rsquo;ve managed to socialize occasionally through things like horror movie club, playing Among Us, etc. but should probably make an effort to do more to not become even more isolated and weird in 2021 &amp;hellip;&lt;/li>
&lt;/ul>
&lt;p>Anyway, in my year-in-review post I just want to cover the media I consume. This year, I definitely binged on movies and video games and did a lot less reading or listening to music, sadly. I used to listen to a lot of audio books and music while driving (or biking &amp;hellip;) and did less of both of those this year.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">My 2020 in review (it was pretty shitty TBH ...)&lt;br>&lt;br>📽️ Film - Akira (1988)&lt;br>🎶 Song - A Door Marked Summer, Steven Wilson (2017)&lt;br>💽 Record - In Cauda Venenum, Opeth (2019)&lt;br>📚 Book - Akira, Katsuhiro Otomo (1982-1990)&lt;br>🎮 Game(s) - Among Us, &lt;a href="https://twitter.com/hashtag/acnh?src=hash&amp;amp;ref_src=twsrc%5Etfw">#acnh&lt;/a>, &lt;a href="https://twitter.com/hashtag/rdr2?src=hash&amp;amp;ref_src=twsrc%5Etfw">#rdr2&lt;/a>&lt;br>🎙️ Podcast - Darknet Diaries&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1345894613375098880?ref_src=twsrc%5Etfw">January 4, 2021&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;h2 id="top-film">Top film&lt;/h2>
&lt;h3 id="akira-1988">Akira (1988)&lt;/h3>
&lt;p>Okay, if you&amp;rsquo;ve been following me on Twitter it comes as no surprise that this is my top film of the year. Towards the end of the year, I went on a 30-day posting rampage on Twitter, sharing just about anything and everything Akira-related that came to my mind.&lt;/p>
&lt;p>But truly I love this movie. I first saw it probably over 15 years ago and it&amp;rsquo;s been one of my favorites since. For a while I had a tradition of watching it every year around new year&amp;rsquo;s. This year, &lt;a href="https://twitter.com/MeganRisdal/status/1330081766795849729">a thread I randomly created on Twitter featuring Akira &amp;ldquo;bike slide&amp;rdquo; homages&lt;/a> kicked off my most recent binge. Instead of linking a trailer below, I&amp;rsquo;ll share one of my favorites among the many Akira-related YouTube videos I&amp;rsquo;ve watched over the past couple of months:&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/2ltgr21jMag" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;p>I love Akira because it&amp;rsquo;s just a perfect mixture of everything I dig: science fiction, body horror, post-apocalypse, violence and gore (but not like, over-the-top), corruption, and gorgeous art. The story is a bit challenging to follow until you&amp;rsquo;ve seen it a few times and the dialog is kind of awkward in my opinion (maybe it&amp;rsquo;s the English translation?), but otherwise it doesn&amp;rsquo;t miss. There&amp;rsquo;s so much depth and so many layers to enjoy about Akira, too. Whether it&amp;rsquo;s its endless themes, its cultural impact, or its utterly astonishing animation, there&amp;rsquo;s a lot to appreciate.&lt;/p>
&lt;p>I could obviously go on but I&amp;rsquo;ll leave it there. I know my tweetstorms about Akira were probably really annoying to a lot of people (myself included at times), but I hope at least one or two of my followers maybe checked out the film and / or manga as a result &amp;hellip;&lt;/p>
&lt;p>Anyway, let&amp;rsquo;s keep this moving. This year, I managed to keep my &lt;a href="https://letterboxd.com/mrisdal/films/diary/">Letterboxd&lt;/a> up-to-date so you can see everything I watched (and what I rated it). I even shelled out for a &amp;ldquo;pro&amp;rdquo; subscription since I think it&amp;rsquo;s a great service. Here are some other films I enjoyed last year:&lt;/p>
&lt;ul>
&lt;li>&lt;em>The Elephant Man&lt;/em> (1980) - WHY did I put off watching this movie for so long &amp;ndash; truly excellent&lt;/li>
&lt;li>&lt;em>Bartleby&lt;/em> (2001) - &amp;ldquo;I would prefer not to&amp;rdquo; is a real mood&lt;/li>
&lt;li>&lt;em>The Invisible Man&lt;/em> (2020) - The last movie I saw in a theater (at the Arclight Dome in Hollywood!)&lt;/li>
&lt;/ul>
&lt;h2 id="top-record">Top record&lt;/h2>
&lt;h3 id="in-cauda-venenum---opeth-2019">In Cauda Venenum - Opeth (2019)&lt;/h3>
&lt;p>Like I said earlier, I sadly didn&amp;rsquo;t discover or listen to a lot of new music in 2020. Right before the pandemic hit, my husband and I had started to go to more small local shows, so maybe things might have been different in an alternate timeline. One nice new album, though, was Opeth&amp;rsquo;s &lt;em>In Cauda Venenum&lt;/em>. We were eager to buy the record and swung by Amoeba Records in Hollywood to try to buy it after it was released several times. Each time they didn&amp;rsquo;t have it in stock yet. When they finally got their shipment in, we picked up the Swedish version. We get home and play it and it turns out it&amp;rsquo;s the English version. Oh well!&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/5Ko4_eO2tiU" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;p>We also had the pleasure of seeing Opeth live TWICE. Well, once was a live show at the Palladium which was one of my last outings of 2020. And the other time (which may have actually happened in 2019, not sure) was seeing Mikael and friends at a bar/restaurant in Hollywood. We were seated across from them! Funnily, I had just earlier that day complained to my husband that they were doing a show in Las Vegas and not LA that weekend &amp;hellip;&lt;/p>
&lt;h2 id="top-song">Top song&lt;/h2>
&lt;h3 id="a-door-marked-summer-steven-wilson-2017">A Door Marked Summer, Steven Wilson (2017)&lt;/h3>
&lt;p>This is the song of 2020 for me because every single time I&amp;rsquo;m checking my audio on my computer or whatever, I test it by playing this on YouTube. With mandatory work from home, I guess I frequently checked my audio this year because I&amp;rsquo;ve listened to this song a lot.&lt;/p>
&lt;p>But seriously, it&amp;rsquo;s a beautiful song. It&amp;rsquo;s an outtake from his solo album &lt;em>To The Bone&lt;/em> (2017) and it sounds a LOT more like &lt;em>Porcupine Tree&lt;/em> than his solo stuff or the rest of the album. Steven Wilson has some of the best b-sides / outtakes, and this is definitely no exception. The moment at 5:26 gets me every time.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/2IIx6g_2DsE" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;p>A couple of amazing b-sides / outtakes by Steven Wilson:&lt;/p>
&lt;ul>
&lt;li>&lt;em>Meantime (In Absentia)&lt;/em>&lt;/li>
&lt;li>&lt;em>Drown with Me (In Absentia)&lt;/em> (how was this not on the original album?!)&lt;/li>
&lt;/ul>
&lt;p>Here&amp;rsquo;s a &lt;a href="https://www.reddit.com/r/porcupinetree/comments/60aqqz/bsides_and_outtakes/">full list&lt;/a> I found on Reddit if you&amp;rsquo;re interested (probably not).&lt;/p>
&lt;h2 id="book">Book&lt;/h2>
&lt;h3 id="akira-katsuhiro-otomo-1982-1990">Akira, Katsuhiro Otomo (1982-1990)&lt;/h3>
&lt;p>Surprise, my book of the year is the &lt;em>Akira&lt;/em> manga.&lt;/p>
&lt;p>My amazing husband bought me the epic &lt;em>35th anniversary Akira manga box set&lt;/em> for my birthday this year. And I read all 2k+ pages / 6 volumes in a single weekend. For many years I&amp;rsquo;ve been tempted to buy the manga. Every time my husband and I would be browsing some used bookstore, I&amp;rsquo;d check out to see if they had the complete manga. But I never quite mustered up enough, umm, money? to make a purchase (I think I must have spent more time in used bookstores when I was a grad student). I&amp;rsquo;m glad I waited for this edition! It&amp;rsquo;s all in the original right-to-left layout with sound effects in Japanese and it comes in a cool box which looks pretty handsome on one of our bookshelves.&lt;/p>
&lt;p>Honestly, I&amp;rsquo;ve never read a manga prior to this one and obviously I was blown away! The artwork is something I could absorb for hours (I&amp;rsquo;ve downloaded so many of my favorites scans to my phone to admire &amp;hellip; or, uhh, post on Twitter). The story is obviously much, much more elaborate than the film (although I think the film did a good job of condensing) and the characters as you know them totally change. Kaneda is even more so just goofy comic relief (and his friendship with Tetsuo) and the real badass is Kei (IMO). Tetsuo is a bratty megalomaniac in the film and I, uhh, guess he still is in the manga, but his transformation is much richer and way, way more disturbing. Akira is actually alive in the manga (not that he says or does much, though) and Kai is still the cutest ever. As in the film, I found the dialog a bit stilted (but, again, I suspect that&amp;rsquo;s partly due to the translation?). I&amp;rsquo;m still confused by Ryu! What&amp;rsquo;s his deal!&lt;/p>
&lt;img src="https://lh3.googleusercontent.com/pw/ACtC-3cd2jw5_QoSMifSjm-89OeJLOyfTSPLz9m-xmtEKPvpW6d49K_T2ukXa1rt0jVvcFjvqaCZmm_NvMNGP3RgDNOyJVzgNpoCAJOoxJJGV-7z5gOULVId4r6Eg-Ui7h2O9rgf70XP7ZNnIJQuPJSMb6dtew=w800-h567-no">
&lt;h2 id="game">Game&lt;/h2>
&lt;h3 id="among-us-2018">Among Us (2018)&lt;/h3>
&lt;p>It was pretty hard to pick a game for 2020 since I spent so much time playing video games. I decide to go with &lt;em>Among Us&lt;/em> because it surprised me the most. I&amp;rsquo;m not normally a fan of deception type games. I know this because my Kaggle coworkers are BIG into deception games like &lt;em>One Night Werewolf&lt;/em> so I think I&amp;rsquo;ve played my fair share during our team offsites. But fact is I&amp;rsquo;m a seriously TERRIBLE LIAR. I don&amp;rsquo;t even like doing deceptive things, much less trying to cover myself up. I generally think this is a positive character trait, but anyhow.&lt;/p>
&lt;p>So it surprised me when I enjoyed this game so much when we played during a Kaggle team remote &amp;ldquo;offsite&amp;rdquo; this year. The actual 2D game aspect of it adds a lot that I appreciate &amp;hellip; like just being able to do some innocent tasks and then enjoy other people who are better than me at deception try to work things out.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/NSJ4cESNQfE" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;p>&lt;em>Among Us&lt;/em> definitely did NOT account for a large share of the time I spent playing video games in 2020, though. Here&amp;rsquo;s what else I played&lt;/p>
&lt;ul>
&lt;li>&lt;em>Zelda Breath of the Wild&lt;/em> - My first Zelda game apart from the time in high school a friend made me beat the final boss in a different series or whatever just so I could credibly say I had played Zelda&lt;/li>
&lt;li>&lt;em>Animal Crossing New Horizons&lt;/em> - Also my first &lt;em>Animal Crossing&lt;/em> which I enjoyed a lot for a while but now I dread the thought of going back to my island&lt;/li>
&lt;li>&lt;em>Red Dead Redemption 2&lt;/em> - I LOVE open world games like Skyrim so I knew it was a matter of time I checked this out (also why I bought Stadia which is great so far!)&lt;/li>
&lt;/ul>
&lt;h2 id="podcast">Podcast&lt;/h2>
&lt;h3 id="darknet-diaries-2008-2019">Darknet Diaries (2008-2019)&lt;/h3>
&lt;p>I honestly can&amp;rsquo;t remember how I discovered &lt;em>Darknet Diaries&lt;/em> by Jack Rhysider, but I&amp;rsquo;ve been really enjoying it so far and highly recommend it if you&amp;rsquo;re remotely interested in cybercrime, hackers, etc. My favorite episode was &lt;a href="https://darknetdiaries.com/episode/54/">&lt;em>NotPetya&lt;/em>&lt;/a>.&lt;/p>
&lt;p>I added a few more things to my regular podcast rotation which includes &lt;em>SYSK&lt;/em>, &lt;em>99% Invisible&lt;/em>, &lt;em>Mindscape&lt;/em>, &lt;em>Daniel and Jorge Explain the Universe&lt;/em>, &lt;em>Radiolab&lt;/em> (don&amp;rsquo;t judge me) among some others, but honestly not too much. I&amp;rsquo;d be happy to hear some suggestions for what I should check out next.&lt;/p>
&lt;p>&amp;ndash;&lt;/p>
&lt;h2 id="reply">Reply&lt;/h2>
&lt;p>Follow the conversation and discuss your favs on Twitter.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">Here&amp;#39;s my 2020 year in review where I talk about my fav movies, music, games, etc. &lt;a href="https://t.co/oUHQSC9aTo">https://t.co/oUHQSC9aTo&lt;/a>&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1345895617139073024?ref_src=twsrc%5Etfw">January 4, 2021&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script></description></item><item><title>How Kaggle makes GPUs accessible to 5 million data scientists</title><link>https://www.meg.dev/posts/kaggle-nvidia-gpus/</link><pubDate>Sun, 08 Nov 2020 17:03:30 -0800</pubDate><author>hello@meg.dev (Meg Risdal)</author><guid>https://www.meg.dev/posts/kaggle-nvidia-gpus/</guid><description>&lt;p>&lt;em>&lt;a href="https://news.developer.nvidia.com/how-kaggle-makes-gpus-accessible-to-5-million-data-scientists/">This post was first published on NVIDIA&amp;rsquo;s developer blog on Oct 26th 2020&lt;/a>&lt;/em>&lt;/p>
&lt;p>Engineers and designers at &lt;a href="https://www.kaggle.com/">Kaggle&lt;/a> work hard behind the scenes to make it easy for our 5 million data scientist users to focus on learning and improving their deep learning models instead of ML ops like environment setup and resource provisioning.&lt;/p>
&lt;p>Kaggle’s community comes to the platform to learn and apply their skills in machine learning competitions. To do this, our users use Kaggle Notebooks, a hosted Jupyter-based IDE.&lt;/p>
&lt;p>Our mission is to help the world learn from data, so we strive to make powerful resources available to our global community at no cost via Kaggle Notebooks. This includes NVIDIA P100 GPUs. Tens of thousands of users train deep learning models with GPUs on Kaggle every month, so ensuring the experience is a good one is key.&lt;/p>
&lt;p>When making accelerators available to our users, we prioritize two things:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Maintaining a fast, no-setup experience so users can start writing code within seconds&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Making efficient use of resources so we can extend them to as many users as possible&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>Achieving this has been no simple feat. In the rest of this post, I’ll describe a sampling of the engineering and design work our team has done to make this possible.&lt;/p>
&lt;h2 id="a-fast-no-setup-user-experience">A fast, no-setup user experience&lt;/h2>
&lt;p>Kaggle Notebooks come with popular data science packages like TensorFlow and PyTorch pre-installed in Docker containers (&lt;a href="https://github.com/kaggle/docker-python">see the Python image GitHub repo&lt;/a>) that run on Google Compute Engine VMs. Our engineers maintain these Docker images so that our users don’t need to worry about installation and dependency management, a huge barrier to getting started with data science.&lt;/p>
&lt;p>We &lt;a href="https://www.kaggle.com/product-feedback/161327">release updates to our images&lt;/a> about every two weeks. This means users always have easy access to the latest package versions which is important in a fast evolving domain such as machine learning.&lt;/p>
&lt;p>So that our users have a consistent, reliable experience using GPUs, we have also implemented a suite of tests that runs automatically every hour to catch any regressions in performance.&lt;/p>
&lt;p>Reproducibility is also important to a fast, no setup user experience. By default, a notebook will always use the Docker image version that it was created with so that code that runs today will still run months later without any special effort. Users also have the option to refer to the latest available image in case they want to make sure they can access new libraries or library versions.&lt;/p>
&lt;p>Given this setup, we have very, very large Docker images (~30GBs) for which we maintain many versions (over 150 so far at a total size of over 1.5TBs). This frequently risks degrading the user experience (e.g., pulling a full image can take around 10 minutes whereas we want our users to be able to begin writing code within seconds) so we’ve also made investments in reducing this pain point.&lt;/p>
&lt;p>For example, we now track which libraries are actually used by our community and automatically remove little-used ones. We’ve made other optimizations that together allow a notebook session to start within a matter of seconds.&lt;/p>
&lt;p>Finally, we recently made our Docker images compatible with the &lt;a href="https://cloud.google.com/deep-learning-vm">Deep Learning VM images used by Cloud AI Notebooks&lt;/a> so that users could easily &lt;a href="https://www.kaggle.com/product-feedback/159602">export their notebook and its dependencies to GCP&lt;/a>. This allows our users to pay for even more powerful compute without running into breaking changes.&lt;/p>
&lt;h2 id="efficient-use-of-resources">Efficient use of resources&lt;/h2>
&lt;p>Providing access to GPUs at no cost to our users is an amazing thing, but our ability to do so isn’t unlimited. To make GPUs available to as many people as possible while maintaining a smooth user experience, our team has undertaken various wastage mitigation measures.&lt;/p>
&lt;p>Recently, we &lt;a href="https://medium.com/google-cloud/a-multi-cluster-grpc-architecture-on-gke-365bbd757df">re-architected the backend service&lt;/a> that provisions sessions for thousands of concurrent notebooks. One of the important new features we implemented was autoscaling for our VM pools. This allowed us to automatically keep a warm pool of GPU VMs at a capacity that’s a percentage above actual demand as opposed to some fixed size. Ultimately, this helped to reduce our costs by 36% while ensuring our users almost never end up in queues waiting for a machine to become available.&lt;/p>
&lt;p>We also continually strive to eliminate abuse. We love to see our community share notebooks like &lt;a href="https://www.kaggle.com/hubwag/rapids-umap-with-fisher-metric-on-rgb-histograms">“RAPIDS/UMAP with Fisher metric on RGB histograms”&lt;/a> on our &lt;a href="https://www.kaggle.com/c/siim-isic-melanoma-classification/notebooks?sortBy=voteCount&amp;amp;group=everyone&amp;amp;pageSize=20&amp;amp;competitionId=20270">melanoma classification competition&lt;/a>. Not notebooks used for cryptocurrency mining. Our efforts here have allowed us to continue to extend these powerful resources to legitimate users.&lt;/p>
&lt;p>&lt;img src="https://lh5.googleusercontent.com/tFZpyALE0OhZjforc-AlrQXuiJNLyoKHwjBD8rH_IWnJ6k1fpNOdomR1BxO_8NqVKfOczjtr53MBBgxNvOVzBz1evWWEucqcqyTVpqJABB1uTFtHR8bfW0_d9jkago6h40Q0BPrQWQ" alt="">&lt;/p>
&lt;p>&lt;em>&lt;a href="https://www.kaggle.com/hubwag/rapids-umap-with-fisher-metric-on-rgb-histograms">3D UMAP embeddings&lt;/a> of melanoma RBG histograms created by &lt;a href="https://www.kaggle.com/hubwag">Hubert Wagner&lt;/a> using a GPU enabled Kaggle Notebook&lt;/em>&lt;/p>
&lt;p>Finally, we’ve made changes in the notebook editor’s frontend to make it easier for our users to more effectively manage their limited accelerator quota (30h/week). For example, we recently made it &lt;a href="https://admin.kaggle.com/product-feedback/152669">easier for users to power a session on and off&lt;/a> within seconds; previously, the session start time could take 30 seconds to a few minutes. Additionally, it’s now possible to edit code interactively without an accelerator and &lt;a href="https://admin.kaggle.com/product-feedback/161328">only use a GPU when saving a new version&lt;/a> (executing the notebook top-to-bottom).&lt;/p>
&lt;h2 id="get-started-with-gpus-on-kaggle">Get started with GPUs on Kaggle&lt;/h2>
&lt;p>Kaggle is a great place to learn how to train deep learning models using GPUs. We have a number of &lt;a href="https://www.kaggle.com/learn/overview">Courses&lt;/a>, series of lessons and interactive notebooks, including &lt;a href="https://www.kaggle.com/learn/deep-learning">Deep Learning&lt;/a>.&lt;/p>
&lt;p>You can apply what you learn in a machine learning &lt;a href="https://www.kaggle.com/competitions">Competition&lt;/a>, for example our ongoing Getting Started NLP Competition to &lt;a href="https://www.kaggle.com/c/nlp-getting-started">predict which tweets are about real disasters or not&lt;/a>.&lt;/p>
&lt;p>Finally, you can browse any of the &lt;a href="https://www.kaggle.com/search?q=tag%3Agpu+in%3Anotebooks">over 30,000 public GPU notebooks&lt;/a> shared on Kaggle. Then, simply click the “Copy &amp;amp; Edit” button to begin editing and running code.&lt;/p>
&lt;p>We hope it’s fast and easy to get started, but if you have feedback &lt;a href="https://www.kaggle.com/product-feedback">please let us know&lt;/a>!&lt;/p>
&lt;p>&lt;em>Thank you to Vincent Roseberry, Dustin Herbison, Philippe Modard, and Anna Montoya for their feedback on this post.&lt;/em>&lt;/p>
&lt;p>&amp;ndash;&lt;/p>
&lt;h2 id="reply">Reply&lt;/h2>
&lt;p>Follow the conversation and discuss on Twitter.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">Cross-posting my post for NVIDIA on my personal blog. Read how we make GPUs accessible to Kaggle&amp;#39;s community of data scientist. 👩‍💻 &lt;a href="https://t.co/7v3hotdkp1">https://t.co/7v3hotdkp1&lt;/a>&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1325607215911235584?ref_src=twsrc%5Etfw">November 9, 2020&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script></description></item><item><title>Product management lessons learned through King Crimson lyrics</title><link>https://www.meg.dev/posts/king-crimson-lyrics/</link><pubDate>Fri, 23 Oct 2020 18:47:03 -0700</pubDate><author>hello@meg.dev (Meg Risdal)</author><guid>https://www.meg.dev/posts/king-crimson-lyrics/</guid><description>&lt;p>Almost every musician I listen to carries influences of the progressive rock band King Crimson. For instance, my favorite musician Steven Wilson has put out entire albums that (to me) sounds like a King Crimson “project”. Including his debut solo album &lt;em>Grace for Drowning&lt;/em> which featured several King Crimson members including Tony Levin.&lt;/p>
&lt;p>Today, I realized not only does King Crimson&amp;rsquo;s sound echo prodigiously within the discographies of my favorite artists, they&amp;rsquo;ve also had a thing or two to say about good (and bad) product management over the decades!&lt;/p>
&lt;p>Without further ado, I present: product management lessons learned through King Crimson lyrics.&lt;/p>
&lt;h2 id="epitaph">Epitaph&lt;/h2>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/-C-HytsGYg0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;blockquote>
&lt;p>Knowledge is a deadly friend&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>If no one sets the rules&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>The fate of all mankind, I see&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Is in the hands of fools&lt;/p>
&lt;/blockquote>
&lt;p>Great power comes from great responsibility and your team looks to you to set the rules. If they sense they’re in the hands of fools, well, confusion will be their epitaph … it’s important to set a strong vision and get buy-in!&lt;/p>
&lt;h2 id="three-of-a-perfect-pair">Three of a Perfect Pair&lt;/h2>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/kKkGMA5gcC0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;blockquote>
&lt;p>She is susceptible&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>He is impossible&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>They have their cross to share&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Three of a perfect pair&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>He has his contradicting views&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>She has her cyclothymic moods&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>They make a study in despair&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Three of a perfect pair&lt;/p>
&lt;/blockquote>
&lt;p>This song is clearly about channeling healthy conflict within “The Triad”: engineering, design, and PM. If things get complicated, aggravated, you’ll end up with a perfect mess.&lt;/p>
&lt;h2 id="starless">Starless&lt;/h2>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/FhKJgqxNDD8" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;blockquote>
&lt;p>Sundown dazzling day&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Gold through my eyes&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>But my eyes turned within&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Only see&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Starless and bible black&lt;/p>
&lt;/blockquote>
&lt;p>If there’s any reason why product managers exist, it’s to set a direction and chart a path for their team to get there. Without a north star, your smiles will only signal emptiness.&lt;/p>
&lt;h2 id="frame-by-frame">Frame by Frame&lt;/h2>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/OxfSC9GybPA" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;blockquote>
&lt;p>Frame by frame (Suddenly)&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Death by drowning (from within)&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>In your, in your analysis&lt;/p>
&lt;/blockquote>
&lt;p>Product managers are constantly making and facilitating decisions. Speed and quality count. Breaking things down step by step can help ensure you don’t fall prey to analysis paralysis so you can keep your team unblocked.&lt;/p>
&lt;h2 id="dinosaur">Dinosaur&lt;/h2>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/ZyBqpjcissc" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;blockquote>
&lt;p>Ignorance has alway been something I excel in&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Followed by naivety and pride&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Doesn&amp;rsquo;t take a scientist to see how&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Any clever predator could have a piece of me&lt;/p>
&lt;/blockquote>
&lt;p>Unlike the fossil in these lyrics, a product manager should reflect and learn from their mistakes. For that matter, a good product manager is &lt;em>always&lt;/em> eager to learn and innovate. Otherwise someone will be digging your bones, too …&lt;/p>
&lt;p>&amp;ndash;&lt;/p>
&lt;h2 id="reply">Reply&lt;/h2>
&lt;p>Follow the conversation and discuss on Twitter.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">Have you wanted to learn some product management lessons via King Crimson lyrics? I got you. &lt;a href="https://t.co/jYqFGLAyng">https://t.co/jYqFGLAyng&lt;/a>&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1319822484754042880?ref_src=twsrc%5Etfw">October 24, 2020&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script></description></item><item><title>Making public mistakes &amp; code memes: The origin of my famous Titanic notebook</title><link>https://www.meg.dev/posts/my-titanic-notebook/</link><pubDate>Tue, 25 Aug 2020 13:38:46 -0700</pubDate><author>hello@meg.dev (Meg Risdal)</author><guid>https://www.meg.dev/posts/my-titanic-notebook/</guid><description>&lt;p>Yesterday, it was a great honor to be a guest on &lt;a href="https://twitter.com/nickwan">Nick Wan&amp;rsquo;s&lt;/a> data science livestream on Twitch to &lt;a href="https://www.twitch.tv/videos/720567732?t=00h20m40s">talk through bad (and less bad) data viz that I&amp;rsquo;ve created&lt;/a>.&lt;/p>
&lt;!-- In case I can get this working later
&lt;iframe
src="https://player.twitch.tv/?video=v720567732&amp;time=00h20m40s"
height="300"
width="400"
frameborder="0"
scrolling="no"
allowfullscreen="false">
&lt;/iframe>
-->
&lt;p>It was a lot of fun! Talking about the history of my popular Titanic R notebook on Kaggle was a great opportunity for me to reflect on my data science journey. Its explosive success was very unintended. But as a result I&amp;rsquo;ve got a couple of cool insights to share about this experience and how I apply them in my role as a product manager at Kaggle today.&lt;/p>
&lt;h2 id="the-history">The history&lt;/h2>
&lt;p>If you haven&amp;rsquo;t come across my introductory ML tutorial on the Titanic Getting Started Competition, then I guess I can&amp;rsquo;t count you among the over half million views it&amp;rsquo;s received in the past 4+ years. &lt;a href="https://www.kaggle.com/mrisdal/exploring-survival-on-the-titanic">&amp;ldquo;Exploring Survival on the Titanic&amp;rdquo;&lt;/a> was my very first public notebook on Kaggle. According to the notebook&amp;rsquo;s history, I created it in March 2016. And the story behind it is perhaps semi-interesting!&lt;/p>
&lt;p>Flashback to late 2015, I had recently joined Kaggle as a user. After mastering out of my PhD in linguistics and getting my first job doing data science for market research, I was hoping to tap into and learn from the machine learning community. While I was waiting for Kaggle to launch a good tabular dataset competition to dip my toes into (still waiting &amp;hellip;), I was mostly playing around with their newly launched public datasets.&lt;/p>
&lt;p>A few months later, Kaggle&amp;rsquo;s newsletter landed in my inbox. They were hiring a part-time content marketing intern. Yes! This could be perfect for me. As the only data scientist at my job, I was eager to make connections and learn in this field. So an opportunity to create content, get feedback, and interview top data scientists was a dream. I applied and after doing an interview and submitting a writing sample, I was asked to do a short test project creating a tutorial notebook.&lt;/p>
&lt;p>This short project ended up becoming the legendary Titanic notebook! In addition to receiving (at time of writing) 542,816 views, it&amp;rsquo;s been upvoted 3,388 times, forked 6,135 times, and has almost 1,000 comments. I never imagined my work test would become one of the top pieces of content on the platform, even 4+ years later.&lt;/p>
&lt;h2 id="lessons-learned">Lessons learned&lt;/h2>
&lt;h3 id="imperfections-reborn-as-blessings">Imperfections reborn as blessings&lt;/h3>
&lt;p>In my interview with Nick, we focused mostly on the bad data viz aspects of my notebook. I explained that the time constraints of the short job test forced me to focus on the aspects which I considered most important:&lt;/p>
&lt;ol>
&lt;li>Delivering an end-to-end tutorial&lt;/li>
&lt;li>A technical yet fun narrative that showed off my writing skills&lt;/li>
&lt;/ol>
&lt;p>I definitely didn&amp;rsquo;t focus on the quality of the data visualizations in the couple of hours I spent on this notebook. Instead, once I got one part working, I moved on to the next. In some places, I wanted to test what was possible in this new-to-me platform which leads to some unusual choices in retrospect which gave us plenty to talk about (what was I thinking with that mosaic plot?).&lt;/p>
&lt;p>&lt;img src="https://www.kaggleusercontent.com/kf/2020416/eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0..7O_SLGfRoS5-KMTnn7m1Gg.TzoJE1yl45bOs1NUIWjrLDScObr1oa4TzMVCkRCgjem3WZDCYGuH9UjCTDSlKF4h270qrX_23Gc9u8LtRtUmfj30gg1PYE4cefcnT8o3WMc_ioQOuOKa8gAXumqgNypgD_VgDW6Lkifbt89thT_C9lDAxzgA7Gdnmz_quoh3ikWeKR6nFL77UYWruoiMbGXdhKGzG2RxaNWEx0C1dNZbDChh0JDR_5LWpUteLSEvuSBpTn5twMGBU8iMddALf7r0KOa49iQk29u5s3BcTElRZfTSkda8yJLmQIg8strYj54kONVCReqZkzo4NsjrZi7Ravo9KAON86eB8MQ_Ic8NUpiJOZ5XxnpBRznRk-7dQ2ESv8T54VmYh4HftGdHIRd3C6jJUeKbJ74CVE6Rupu9RqFsbV_uBcFKVvaCRNV4G1dGWzg2eOu2UOedlfoL6-3yB4louD3LnYE8_MZDVyOdF2TW7DGNiM8n0qX15ZuVlVmBLKAyyg8AyC6zW8TxXG4iHvU2GaEFGMDk970T09xVZcidIGvEYk1Ey7TnBQowLnQqL8IgVnE8DVrN1tfjJfXQEz_ZbrtTXMPjJ0t6r4h4wKoVNO7bgwvoDMFEGU7lU0H2rgEFqkypI6PZ0hHTBHbvLNIo-GZcbhyUO6lz7fnntQ.LTbN0FfZK44JvhmQM0TTqA/__results___files/figure-html/unnamed-chunk-7-1.png">&lt;figcaption>&lt;em>I can make a mosaic plot! But why?&lt;/em>&lt;/figcaption>&lt;/p>
&lt;p>In the end, I&amp;rsquo;m glad I focused on writing over data visualization or even quality of my code (because this is what I was evaluated on and I got the job, after all). Now that the notebook has seen such success with newcomers to machine learning, I think its flaws are actually a good thing in two ways.&lt;/p>
&lt;p>First, as you might be able to glean from the comments if you read them, it&amp;rsquo;s very easy to find areas to improve upon my work. This makes this notebook a great launching pad.&lt;/p>
&lt;p>Second, if you can improve upon something that&amp;rsquo;s as popular as my Titanic notebook, hopefully that gives you a (well deserved) confidence boost as a learner! These kinds of wins are really motivating early on and to the extent this notebook as enabled that feeling for many people, I&amp;rsquo;m really proud of it!&lt;/p>
&lt;p>In all of this, I experienced how much you stand to learn from the community when you put yourself out there early and often even if it requires knowingly making mistakes in public. Today, as a product manager at Kaggle, this reinforces for me how important it is for Kaggle&amp;rsquo;s community to be open to people from all over the world who are putting themselves out there to ask questions and learn.&lt;/p>
&lt;h3 id="code-snippets-as-memes">Code snippets as memes&lt;/h3>
&lt;p>Another observation that I shared in my interview with Nick was about how I&amp;rsquo;d see other people copy distinctive bits of my data visualization code in their notebooks. I&amp;rsquo;d notice my plots repurposed for different datasets in my Kaggle newsfeed or just browsing others&amp;rsquo; notebooks. Since I&amp;rsquo;m not particularly enamored with my own data viz work here, it was kind of embarrassing to see my mistakes proliferate!&lt;/p>
&lt;p>&lt;img src="https://www.kaggleusercontent.com/kf/2020416/eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0..7O_SLGfRoS5-KMTnn7m1Gg.TzoJE1yl45bOs1NUIWjrLDScObr1oa4TzMVCkRCgjem3WZDCYGuH9UjCTDSlKF4h270qrX_23Gc9u8LtRtUmfj30gg1PYE4cefcnT8o3WMc_ioQOuOKa8gAXumqgNypgD_VgDW6Lkifbt89thT_C9lDAxzgA7Gdnmz_quoh3ikWeKR6nFL77UYWruoiMbGXdhKGzG2RxaNWEx0C1dNZbDChh0JDR_5LWpUteLSEvuSBpTn5twMGBU8iMddALf7r0KOa49iQk29u5s3BcTElRZfTSkda8yJLmQIg8strYj54kONVCReqZkzo4NsjrZi7Ravo9KAON86eB8MQ_Ic8NUpiJOZ5XxnpBRznRk-7dQ2ESv8T54VmYh4HftGdHIRd3C6jJUeKbJ74CVE6Rupu9RqFsbV_uBcFKVvaCRNV4G1dGWzg2eOu2UOedlfoL6-3yB4louD3LnYE8_MZDVyOdF2TW7DGNiM8n0qX15ZuVlVmBLKAyyg8AyC6zW8TxXG4iHvU2GaEFGMDk970T09xVZcidIGvEYk1Ey7TnBQowLnQqL8IgVnE8DVrN1tfjJfXQEz_ZbrtTXMPjJ0t6r4h4wKoVNO7bgwvoDMFEGU7lU0H2rgEFqkypI6PZ0hHTBHbvLNIo-GZcbhyUO6lz7fnntQ.LTbN0FfZK44JvhmQM0TTqA/__results___files/figure-html/unnamed-chunk-11-1.png">&lt;figcaption>&lt;em>A strobe light in boxplot form, complete with hardcoded values.&lt;/em>&lt;/figcaption>&lt;/p>
&lt;p>Code snippets are kind of like chunks of genetic material. Probably stuff that tends to work pretty well will replicate successfully in an ecosystem. And my notebook had a lot of signals of being a &amp;ldquo;good idea&amp;rdquo; in general: lots of views and upvotes, lots of forks, lots of comments, and highish score on the competition.&lt;/p>
&lt;p>In general, I&amp;rsquo;d argue that publicly sharing and reusing reproducible code under an open license has been a good thing for developer productivity. But there are plenty of traps, too, as I witnessed my own flawed code go viral like it was some meme. This is something that I think a lot about now in my capacity as a product manager for Kaggle Notebooks (and as someone who previously worked at Stack Overflow). Questions like:&lt;/p>
&lt;ol>
&lt;li>What signals do you use to know some code you&amp;rsquo;re looking at is high quality and trustworthy?&lt;/li>
&lt;li>How can we make it easier to find and effectively reuse useful, high quality code snippets?&lt;/li>
&lt;li>How do you safely and easily update code snippets (mine are over four years old and probably still circulating)&lt;/li>
&lt;/ol>
&lt;p>Especially if you have thoughts about how to measure quality, I&amp;rsquo;m interested in chatting more!&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>Thanks to my willingness to publish what you could call &amp;ldquo;bad data viz&amp;rdquo; today, I&amp;rsquo;ve come a really long ways in my career. It&amp;rsquo;s been an awesome journey from doing a small work test in a notebook to now managing that very notebook product in a few years. In a fun twist of fate, I suppose now I&amp;rsquo;m even responsible for how slowly this page loads due to its popularity!&lt;/p>
&lt;p>If you want to hear more about my journey and my perspectives on data visualization (including an example of a &amp;ldquo;good&amp;rdquo; data viz), check out &lt;a href="https://www.twitch.tv/videos/720567732?t=00h20m40s">my interview on Nick Wan&amp;rsquo;s Twitch&lt;/a>.&lt;/p>
&lt;p>&amp;ndash;&lt;/p>
&lt;h2 id="reply">Reply&lt;/h2>
&lt;p>Follow the conversation and discuss on Twitter.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">Making public mistakes &amp;amp; code memes: The origin of my famous Titanic notebook 🚢 &lt;a href="https://t.co/4WzqYRLly9">https://t.co/4WzqYRLly9&lt;/a>&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1298398384529633280?ref_src=twsrc%5Etfw">August 25, 2020&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script></description></item><item><title>How our team improved perceived reliability of Kaggle Notebooks</title><link>https://www.meg.dev/posts/improved-kaggle-notebooks-reliability/</link><pubDate>Thu, 13 Aug 2020 15:18:44 -0700</pubDate><author>hello@meg.dev (Meg Risdal)</author><guid>https://www.meg.dev/posts/improved-kaggle-notebooks-reliability/</guid><description>&lt;p>I’ve worked at Kaggle on-and-off since 2016. In this time, THE most consistent source of user feedback is about the reliability of &lt;a href="https://www.kaggle.com/notebooks">Kaggle Notebooks&lt;/a>. Sessions were slow to start and, far worse, sometimes users would lose hours of work. While progress had been made over the years, we’d never systematically addressed the problems.&lt;/p>
&lt;p>Over the past half year or so since I’ve rejoined Kaggle, the Notebooks team renewed its focus on reliability. In this post, I&amp;rsquo;m proud to share how our team used a systematic approach to significantly improve reliability, both in terms of quantitative metrics as well as user perceptions.&lt;/p>
&lt;h2 id="background">Background&lt;/h2>
&lt;p>Kaggle Notebooks is a no-cost managed &lt;a href="https://jupyter.org/">Jupyter-based&lt;/a> notebook product. Our users use Python and R notebooks to analyze datasets, train models, and submit predictions to machine learning competitions. Today we manage many thousands of VMs handling thousands of concurrent sessions for users all around the globe.&lt;/p>
&lt;p>When I joined in 2020, we felt confident that reliability was the number one thing we could work on to improve our users’ experience using Kaggle Notebooks. We knew this from:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>A &lt;a href="https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43221.pdf">happiness and tracking survey&lt;/a> we send to a sample of users each month&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The volume of bug reports on our &lt;a href="https://www.kaggle.com/product-feedback">site feedback forums&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>Improving user experience is a critical priority for Kaggle for a few reasons:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Notebook usage is required for some competitions and we don’t want the user experience to be such a pain that it turns users off participating completely.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Many brand new data science learners use Notebooks and if you’re new to something, sometimes it’s hard to tell if bugs and instability are your fault or not.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>We want users to use Kaggle Notebooks enough to create cool, helpful analyses that they want to share with the community.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="our-approach">Our approach&lt;/h2>
&lt;p>In our approach to the problem, we considered reliability as having two facets: actual and perceived. In the first half of 2020, we prioritized a number of focused improvements to address both facets:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>We maintained a dedicated working group to address a backlog of issues and monitor and respond to user feedback.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>We implemented a new scalable, highly available backend architecture (&lt;a href="https://medium.com/google-cloud/a-multi-cluster-grpc-architecture-on-gke-365bbd757df">read about it from Mod&lt;/a>, the technical lead on the project) with multiregion support.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>We shipped features to improve perceived reliability like “sessionless editing”, a &lt;a href="https://www.kaggle.com/product-feedback/139884">brand new save workflow&lt;/a>, and better session start/stop controls in the UI.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>We feel the biggest game-changer was the &lt;a href="https://www.kaggle.com/product-feedback/152669">sessionless editing&lt;/a> feature that we delivered in June. Previously, rendering the notebook required a running jupyter server. But, starting the session took over a minute at the 95th percentile and about half a minute at the 50th percentile. This was a huge point of frustration for our users that we hypothesized contributed substantially to perceptions of poor reliability. With sessionless editing, we can now render and initialize the notebook editor within seconds.&lt;/p>
&lt;p>The gif below illustrates a side-by-side comparison of the experience before and after launching our sessionless editing feature.&lt;/p>
&lt;img src="https://lh6.googleusercontent.com/M4JW0ArB84eEPsvv5QPvSfj5mgmiyGShz2Z7G864Xtew7KWHGc-U9-FPlLdPwHDGOsVknZie7SOfDhdJcjbHr79XeaeLgXeRKoz1GmusJ-0XHSDW8vv9MlvCt7gfulhi4sMmJjASOA">
&lt;figcaption>_Less waiting, more coding._&lt;/figcaption>
&lt;p>Next, measuring impact was critical. To match actual and perceived reliability, we took a multi-modal approach to quantifying the results of our efforts.&lt;/p>
&lt;p>To measure actual reliability, our reliability working group created a dashboard to monitor and set goals against some key metrics like availability and time-to-edit latency.&lt;/p>
&lt;p>In part to measure perceived reliability on an ongoing basis, we also started a quarterly one-question survey. It asks recent notebooks users to “Please select any of the issues below that you have experienced on Kaggle Notebooks in the past couple of months”. Users could then select multiple options like “Notebook session was unreliable” and “Insufficient features available”. We fielded the survey twice: once at the end of Q1 and again at the end of Q2.&lt;/p>
&lt;h2 id="results">Results&lt;/h2>
&lt;p>I’ll focus on the qualitative results in response to the one-question reliability survey. Our quantitative data showed progress, but would require a longer blog post to walk through.&lt;/p>
&lt;p>First, you can see the overall results below.&lt;/p>
&lt;img src="https://lh5.googleusercontent.com/ZFxsZkuPKlMNm64NdbU8Wf07xhdO3TLfSsKdatZqk_zkjxwo48W6-FKLHLKu3h_amLMHC0Y9AeWnzQn1P4vEaSxcNF_kHPgER34N6e-8o4h1yyKeSn1mLCS3PEnuSry7HZcD4eG0yw">
&lt;figcaption>_Overall issues that survey respondents said they experience using Kaggle Notebooks._&lt;/figcaption>
&lt;p>Most users in both quarters reported having no recent issues which is great. But, reliability (i.e., “Notebook session was unreliable”) was the second most common response in both quarters. Reliability concerns definitely still persist among respondents.&lt;/p>
&lt;p>When we focus on percentage change between Q1 and Q2, however, it becomes clear that we did successfully make progress in the right direction.&lt;/p>
&lt;img src="https://lh3.googleusercontent.com/FSuAei-kyBuW76fb9v0V8va91RgmFGfIB98cFD_St4iWTPfx1GC7qBQfzFh0G26i2OKKBm5L9shfD3Wlagjgn2jO8TbTrQSOJYdHovEAxvG1BqYLRmI_EJsEMHujFHdhy4ahtyPGyA">
&lt;figcaption>_Percentage change from quarter-to-quarter for each issue._&lt;/figcaption>
&lt;p>Because most of these items are issues (i.e., pain points), an increase from Q1 to Q2 is generally bad (red) whereas a decrease is generally good (blue). Only some of the changes are actually significant (the solid-filled bars).&lt;/p>
&lt;p>We saw statistically significant decreases in users mentioning:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>📉 33%: Can&amp;rsquo;t depend on notebooks to do serious work&lt;/p>
&lt;/li>
&lt;li>
&lt;p>📉 19%: Session was unreliable&lt;/p>
&lt;/li>
&lt;li>
&lt;p>📉 18%: Session was slow&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>Even though reliability still remains a top concern for our users, we were really pleased with these results. Plus, this is the first time we’ve quantified user perceptions to tell us that we’re making progress.&lt;/p>
&lt;h2 id="takeaways">Takeaways&lt;/h2>
&lt;p>The biggest takeaway is that we’re not done yet, but we’re trending in the right direction. We remind ourselves regularly that this is a journey and what matters is being on the right track. Based on our results so far, we intend to maintain our dedicated reliability working group, set new goals, and continue to listen to user feedback.&lt;/p>
&lt;p>&lt;em>Massive thanks to everyone on the team who contributed to this effort: &lt;a href="https://www.kaggle.com/aagundez">Aurelio&lt;/a>, &lt;a href="https://www.kaggle.com/jplotts">Jim&lt;/a>, &lt;a href="https://www.kaggle.com/herbison">Dustin&lt;/a>, &lt;a href="https://www.kaggle.com/noderaider">Cole&lt;/a>, &lt;a href="https://www.kaggle.com/gphilmod">Philippe (Mod)&lt;/a>, &lt;a href="https://www.kaggle.com/mbooth">Michael&lt;/a>, &lt;a href="https://www.kaggle.com/rosebv">Vincent&lt;/a>, &lt;a href="https://www.kaggle.com/erdalsivri">Erdal&lt;/a>, &lt;a href="https://www.kaggle.com/einavcb">Einav&lt;/a>, &lt;a href="https://www.kaggle.com/craerek">Chelsea&lt;/a>. It’s an honor and a thrill to be part of such a great team. Special thanks to Jim who co-authored the original internal report that this blog post is based on and to &lt;a href="https://www.kaggle.com/jessicali9530">Jessica&lt;/a> for fielding the survey. Last but far from least, thank you to our users for your invaluable feedback and your patience!&lt;/em>&lt;/p>
&lt;p>&amp;ndash;&lt;/p>
&lt;h2 id="reply">Reply&lt;/h2>
&lt;p>Follow the conversation and discuss on Twitter.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">How we improved perceived reliability of Kaggle Notebooks &lt;a href="https://t.co/sMjgtqaKrN">https://t.co/sMjgtqaKrN&lt;/a>&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1294039078933901312?ref_src=twsrc%5Etfw">August 13, 2020&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script></description></item><item><title>Be aggressive, be be aggressive. But how aggressive?</title><link>https://www.meg.dev/posts/be-aggressive/</link><pubDate>Fri, 19 Jun 2020 19:47:01 -0700</pubDate><author>hello@meg.dev (Meg Risdal)</author><guid>https://www.meg.dev/posts/be-aggressive/</guid><description>&lt;p>This week I asked for feedback on something I wrote from a trusted colleague. My audience was larger than usual for me and 100% men (as far as I knew). Although I&amp;rsquo;m already pretty confident in my prose-writing skills, I felt greater than usual pressure to make a compelling, tight story. I wanted what I wrote to sound authoritative and well informed.&lt;/p>
&lt;p>My colleague gave me great constructive feedback and overall really liked what I wrote. Except one spot where I came across as harsh and somewhat arrogant.&lt;/p>
&lt;p>I cringed. &lt;em>I know, I know&lt;/em>. When drafting that particular point, I had literally thought to myself (knowing that I can tend to hedge too much) &amp;ldquo;Okay, try to sound very assertive and &lt;em>masculine&lt;/em>.&amp;rdquo; It wasn&amp;rsquo;t me. It wasn&amp;rsquo;t my style or my voice. And it ended up sounding too abrasive.&lt;/p>
&lt;p>Anyway, easy enough fix. I softened the language and sent it off to my co-authors.&lt;/p>
&lt;p>But, I kept thinking about this. It really made me realize how I&amp;rsquo;m constantly monitoring how I speak and write to perfectly balance cold authority and warm personability. Whether I&amp;rsquo;m self conscious about the number of &amp;ldquo;:)&amp;rdquo; or &amp;ldquo;!&amp;rdquo; that I use in an email or my willingness to admit &amp;ldquo;I don&amp;rsquo;t know&amp;rdquo; in a meeting, it&amp;rsquo;s a perpetual struggle against my natural tendencies.&lt;/p>
&lt;p>The thing is, I rarely actually feel 100% confident. But I know that my male counterparts, even when they &lt;em>sound&lt;/em> totally (and sometimes absurdly) sure of themselves, they can&amp;rsquo;t possibly be so certain either! So I try to put myself in their state of mind and just fake it. If I don&amp;rsquo;t &amp;ldquo;sound technical enough&amp;rdquo;, I&amp;rsquo;d rather actually become more competent than merely sound like it, for example. That&amp;rsquo;s where my energy goes.&lt;/p>
&lt;p>I don&amp;rsquo;t really like games, either, where I have to put on a guise and deceive my audience. And obviously it can be backfire coming from a woman. A woman product manager without a background in software engineering. But I don&amp;rsquo;t have patience for that and I prefer to be my honest, authentic self.&lt;/p>
&lt;p>So after dwelling on this for a couple of days, I think I&amp;rsquo;ve come up with a way to determine how to strike the right tone. I&amp;rsquo;ll rehearse for my husband. I&amp;rsquo;m 100% comfortable and safe saying what I truthfully believe in a confident way to him. We&amp;rsquo;ll see how this strategy works for me the next time I&amp;rsquo;m stuck on how to phrase something in an authoritative way that still sounds like me.&lt;/p>
&lt;p>Anyway, this isn&amp;rsquo;t really a theory informed blog post. It could be if I spent some minutes doing some research on gendered language in the workplace and maybe I&amp;rsquo;ll do that later. Even though as a linguist I feel a bit guilty about that, for now I wanted the gratification of finally publishing a new blog post after a few months.&lt;/p>
&lt;p>How do you decide how &amp;ldquo;aggressive&amp;rdquo; to be at work?&lt;/p>
&lt;p>&amp;ndash;&lt;/p>
&lt;h2 id="reply">Reply&lt;/h2>
&lt;p>Follow the conversation and discuss on Twitter.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">How aggressive should you be at work? &lt;a href="https://t.co/ws9uK0ZFaj">https://t.co/ws9uK0ZFaj&lt;/a>&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1274184503880060928?ref_src=twsrc%5Etfw">June 20, 2020&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script></description></item><item><title>Kaggle’s 5 remote-first tips for new WFHers</title><link>https://www.meg.dev/posts/kaggle-wfh-tips/</link><pubDate>Sun, 29 Mar 2020 14:51:50 -0400</pubDate><author>hello@meg.dev (Meg Risdal)</author><guid>https://www.meg.dev/posts/kaggle-wfh-tips/</guid><description>&lt;p>&lt;em>This post was originally &lt;a href="https://dev.to/mrisdal/kaggle-s-5-remote-first-tips-for-new-wfhers-3a4g">published on DEV&lt;/a>. My teammate &lt;a href="https://twitter.com/vimota">Victor Mota&lt;/a> and I wrote it together. You can check out &lt;a href="https://vimota.me/writing">his blog here&lt;/a>.&lt;/em>&lt;/p>
&lt;p>&lt;a href="https://www.kaggle.com/">Kaggle&lt;/a> is a unique team at Google. Unlike the vast majority of Google teams, our team is fully remote-first and distributed in offices (Google and home) across North America and Australia. When the spread of COVID-19 led to mandates to &lt;strong>work from home (WFH)&lt;/strong>, my coworker &lt;a href="https://twitter.com/vimota">Victor&lt;/a> and I saw an opportunity to share insights from our team to help others across Google adapt.&lt;/p>
&lt;p>So we recently shared our top five remote-first tips with Cloud AI leadership, our parent organization within Google. Now, we want to share our advice with you! The advice we put together is based on the things that we believe either require the biggest behavior shift or stand the best chance of increasing productivity to address pain points in this time of transition.&lt;/p>
&lt;img src="https://lh3.googleusercontent.com/_2DqxUWQbNQPDl30igL5GyIRl-M6v10c8FPBOYu43Yqq2mxWQL1coExNhqG8KmWOG0krhWrrdFX6inVwmRL-jddLqg37LE3qYkAIvaZo1EAKkvXdi2Tl-yk7weTMTalklXoKjSGa">
&lt;figcaption>_Victor and me presenting our WFH tips to WFH Google Cloud AI leaders … while WFH_&lt;/figcaption>
&lt;h2 id="background">Background&lt;/h2>
&lt;p>First, to establish a bit more context, I’ll share more about Kaggle. Our team is made up of about 50 members in engineering, marketing, product management, data science, design, etc. Kaggle has been remote-first for about a decade.&lt;/p>
&lt;p>Second, our core values are important to framing how we approach remote-first.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Low ego&lt;/strong> because it facilitates trust and open communication&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>User first&lt;/strong> because it drives focus on important problems to solve&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Agility&lt;/strong> because it helps us make decisions quickly in ambiguity&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>You may want to consider how you can leverage aspects of your team’s culture to reinforce WFH productivity.&lt;/p>
&lt;h2 id="tip-1-default-open">Tip #1: Default open&lt;/h2>
&lt;h3 id="-problem">🙅‍♀️ Problem&lt;/h3>
&lt;p>Your team may be feeling isolated, out of the loop, and siloed. Team members may be communicating one on one but missing the sense of team and community. This can cause anything from miscommunications or dropped balls to serious tensions and degrading trust on your team.&lt;/p>
&lt;h3 id="-remote-first-solution">✅ Remote-first solution&lt;/h3>
&lt;p>Default to communicating as openly and transparently as possible with your team. Make extensive use of public (to your team), readily accessible communication channels.&lt;/p>
&lt;h3 id="-tactics-for-your-teams">🛠 Tactics for your teams&lt;/h3>
&lt;h4 id="deliberately-communicate-more-frequently-than-you-think-you-need-to">Deliberately communicate more frequently than you think you need to&lt;/h4>
&lt;p>Communicate more frequently. Also make sure you’re not simply shouting into a void, but ensure that your team hears and understands, as well. Make sure your calendar events and Google Docs are visible by all by default.&lt;/p>
&lt;h4 id="share-meeting-summaries--action-items-in-a-public-to-your-team-venue">Share meeting summaries / action items in a public (to your team) venue&lt;/h4>
&lt;p>Take good meeting notes and share out summaries or action items in a public venue. GitLab has more great remote meeting tips in their &lt;a href="https://about.gitlab.com/company/culture/all-remote/meetings/">handbook&lt;/a>.&lt;/p>
&lt;h4 id="if-you-repeat-something-verbally-in-11s-write-it-down-in-a-google-doc-and-share">If you repeat something verbally in 1:1s, write it down in a Google Doc and share&lt;/h4>
&lt;p>Don’t succumb to games of telephone. If something seems to be remotely important write it down. If your team doesn’t already formally document everything, this may make certain things feel more “official” than they might really be. The next tactic is one way to help make this adjustment.&lt;/p>
&lt;h4 id="make-wip-docs-available-for-input-from-more-people-earlier">Make WIP docs available for input from more people earlier&lt;/h4>
&lt;p>Get feedback earlier on things in progress. Normally you would get feedback about ideas or projects in progress during “watercooler chat”. This is a way to replicate that and you might find that you even get more diverse and creative input.&lt;/p>
&lt;img src="https://lh3.googleusercontent.com/4ZoTo6RKCAYXLwF_RPvnBYdtN_Q0EQ_2diwx4_JHoBrdfTfd42fe45WctyDdpPcLw4XfgrslXSEzG3jpuiTk_aK_aPTAPDd0nHlTGKX3Tm47n9J9CDRNkWhipQWYR1_q63q7qwqB">
&lt;figcaption>_Making important documents easily accessible to anyone on the team_&lt;/figcaption>
&lt;h2 id="tip-2-practice-async-communication">Tip #2: Practice async communication&lt;/h2>
&lt;h3 id="-problem-1">🙅‍♀️ Problem&lt;/h3>
&lt;p>Feedback loops are slow. Team members are AFK and unresponsive during typical working hours. This can slow projects down and leave people feeling frustrated.&lt;/p>
&lt;h3 id="-remote-first-solution-1">✅ Remote-first solution&lt;/h3>
&lt;p>Move more communication to async, setting norms and expectations so work still gets done efficiently. Kaggle’s team is distributed across many time zones so this is really important for us. Your teams may not be so distributed as ours, but at a time when so many team members’ schedules are becoming unpredictable or shifted, async can be critical.&lt;/p>
&lt;h3 id="-tactics-for-your-teams-1">🛠 Tactics for your teams&lt;/h3>
&lt;h4 id="agree-on-team-wide-expectations-around-hours-of-communication-and-availability">Agree on team-wide expectations around hours of communication and availability&lt;/h4>
&lt;p>Agreeing on team-wide expectations around hours of communication and availability. If you haven’t already done this, this is absolutely step 1! For inspiration, checkout GitLab’s handbook on &lt;a href="https://about.gitlab.com/handbook/communication/">communication guidelines&lt;/a>.&lt;/p>
&lt;h4 id="know-when-to-move-from-async-to-sync">Know when to move from async to sync&lt;/h4>
&lt;p>Next, to the extent possible, be willing to quickly jump into a call if something doesn’t seem resolvable via chat. This means keeping a headset handy. This is especially useful in cases where you might feel things are tense or something is getting lost in translation.&lt;/p>
&lt;h4 id="create-a-venue-like-chat-for-async-daily-standup">Create a venue like chat for async daily standup&lt;/h4>
&lt;p>Finally, if you’re worried about making sure you know what everyone on the team is working on, create a venue for this. We have a chat channel called #nikodaily where people share 1. What they did today. 2. What they’re doing tomorrow. 3. Any blockers. 4. Any FYIs. Create something that works for you.&lt;/p>
&lt;img src="https://lh5.googleusercontent.com/88aW56hNbTBU4fGNzyRbdLV6kEIPGh0soArqSLbczHXql8FyVxsbFampHNWWjc45FSaM-HXkHmQ3Ija38m5AdNqhHzAInAlv5ouea35th2EM_hM_pHrrjjlqGxQ7lBw30GekDtKm">
&lt;figcaption>_Our internal Niko Daily tool which records our async standup statuses and notes_&lt;/figcaption>
&lt;h2 id="tip-3-embrace-a-non-linear-workflow">Tip #3: Embrace a non-linear workflow&lt;/h2>
&lt;h3 id="-problem-2">🙅‍♀️ Problem&lt;/h3>
&lt;p>Without the ability to just walk over to someone and ask a question, team members are blocked and not making progress on a task, frustrated they can’t get immediate help.&lt;/p>
&lt;h3 id="-remote-first-solution-2">✅ Remote-first solution&lt;/h3>
&lt;p>This tip applies especially to engineering teams. For engineers who bristle at lots of meetings and context switches, productivity is normally associated with finding flow on a single task. That’s not always possible in a remote, distributed context. Similarly to async communication, a remote workflow expects non-linear progress and optimizes for it.&lt;/p>
&lt;h3 id="-tactics-for-your-teams-2">🛠 Tactics for your teams&lt;/h3>
&lt;h4 id="have-multiple-tasks-that-you-can-switch-between-to-always-ensure-progress">Have multiple tasks that you can switch between to always ensure progress&lt;/h4>
&lt;p>Due to the asynchronous nature of remote work and especially with current unpredictable circumstances, try to have more than one task on the go, that you can switch between if you get blocked on your current task. At the same time, avoid having so many ongoing tasks at once that context switching prevents making any progress.&lt;/p>
&lt;h4 id="document-and-make-team-knowledge-searchable-to-minimize-pings">Document and make team knowledge searchable to minimize pings&lt;/h4>
&lt;p>Since you and your teammates may be focused on different things or available at different times, before pinging someone and potentially interrupting their workflow, check if your question has been answered in one of your public channels. One of the benefits of defaulting to open is that all your team knowledge is written down and searchable!&lt;/p>
&lt;h4 id="provide-lots-of-context">Provide lots of context&lt;/h4>
&lt;p>When you’re blocked and waiting for someone’s response, give plenty of context on what you’ve tried and what you understand so far so they can unblock you while you’re working on something else. Likewise, when responding to others, be deliberate about unblocking them. For example when making decisions or reviewing code, if possible give approval with conditions so they can progress without another round trip to you.&lt;/p>
&lt;h2 id="tip-4-foster-team-bonding">Tip #4: Foster team bonding&lt;/h2>
&lt;h3 id="-problem-3">🙅‍♀️ Problem&lt;/h3>
&lt;p>Morale is low and team members feel lonely and disconnected from each other. Tensions might emerge as trust weakens. People may feel less willing to take risks.&lt;/p>
&lt;h3 id="-remote-first-solution-3">✅ Remote-first solution&lt;/h3>
&lt;p>For many years, a Kaggler on our team, &lt;a href="https://www.kaggle.com/jeffmoser">Jeff Moser&lt;/a>, has evangelized &lt;a href="https://stevemcconnell.com/">Steve McConnell’s&lt;/a> concept of the “half life of trust”. The longer you’re removed from aspects of your colleagues’ lives that make you realize who they are outside of work, the lower your trust is with them.&lt;/p>
&lt;p>In a &lt;a href="https://rework.withgoogle.com/blog/five-keys-to-a-successful-google-team/">study on Google team effectiveness&lt;/a>, psychological safety was the number one factor contributing to team success. Psychological safety requires trust, so for remote teams for whom this is harder to build, you have to be very deliberate about cultivating it. Put effort into unique ways to maintain and strengthen personal bonds. And have fun. :)&lt;/p>
&lt;h3 id="-tactics-for-your-teams-3">🛠 Tactics for your teams&lt;/h3>
&lt;h4 id="celebrate-wins-even-more-often">Celebrate wins (even more) often!&lt;/h4>
&lt;p>First, celebrate wins more often. We use chat to regularly share wins in our largest team channel. If your company has a peer recognition system, encourage your team to use it.&lt;/p>
&lt;h4 id="set-up-socialization-spaces-for-watercooler-chat">Set up socialization spaces for “watercooler” chat&lt;/h4>
&lt;p>Second, set up spaces to replace watercooler chat. These can be a combination of async (e.g., chat) and sync (e.g., recurring optional team meetings).&lt;/p>
&lt;h4 id="use-emojis-gratuitously-seriously-">Use emojis gratuitously (seriously!) 🤪&lt;/h4>
&lt;p>Finally, it might sound like a joke (okay, it’s a little tongue-in-cheek), but don’t forget to use emojis! By this, I really mean make sure you find ways to insert &lt;a href="https://en.wikipedia.org/wiki/Phatic_expression">phatic&lt;/a> expressions that are often missing from text-based communication.&lt;/p>
&lt;img src="https://lh5.googleusercontent.com/50Lgie0JK1SX5q89hTcP_XdcFyUAOwXrkUMJteN-KwdUCkPkrkdHE_Whno8Bzs0OWc3TaWIHow404nYboDBuAgIDkRx9yS1-9bv8w84-EjC34co6ZPW_SnpClpuG7ReDJVcpkKDv">
&lt;figcaption>_A sampling of posts from our some of our many interest-based chat channels like #pets, #random, and #booksandmovies_&lt;/figcaption>
&lt;h2 id="tip-5-take-care-of-yourself">Tip #5: Take care of yourself&lt;/h2>
&lt;p>Our last bit of advice is to take care of yourself and encourage your teams to do the same.&lt;/p>
&lt;p>As we all know this is not a normal work from home situation. Even for our team, one that’s been remote for almost a decade, some of us are feeling the impact on our well being and productivity. In fact, we know from experience that some folks may respond to a situation like this by working even harder than usual. We have to give ourselves and each other a break.&lt;/p>
&lt;p>There’s a LOT of good advice already out there for well being and work-life balance. But here are some tips from our team. You should strive to do them to the extent possible, but it may be harder for some given circumstances.&lt;/p>
&lt;img src="https://lh6.googleusercontent.com/VUvXqngZRbA474lJqLYUX5kvRFpLqafGoTkvIZuE7ON54P2343dvu7_3ZEi4P6n-GVvxyU4PlKLrOUSFsSWQYXlAt_HjXhu1Fu4BAXY1_rfRd1BVoT4checRaBMnLyEsOLAfeSaX">
&lt;figcaption>_This is not normal_&lt;/figcaption>
&lt;h3 id="-tactics-for-your-teams-4">🛠 Tactics for your teams&lt;/h3>
&lt;h4 id="establish-clear-work-boundaries">Establish clear work boundaries&lt;/h4>
&lt;p>Have a routine of “going to the office” like get showered and dressed, maybe exercise to start the day. Also have a wind down routine for “going home” for example go for a walk. Try to have a dedicated space for work only.&lt;/p>
&lt;h4 id="disconnect-by-creating-a-predictable-schedule">Disconnect by creating a predictable schedule&lt;/h4>
&lt;p>Disconnecting requires finding or creating predictability. For example, try to work the same regular hours. Snooze or disable notifications when you’re done working. And make sure your working hours are visible to others.&lt;/p>
&lt;h4 id="assume-good-intent">Assume good intent&lt;/h4>
&lt;p>Finally, assume good intent from those you’re working with. This is an extremely taxing time for many and patience can more easily wear thin and mistakes will be made. Be understanding and compassionate (including with yourself!).&lt;/p>
&lt;h2 id="wrapping-up">Wrapping up&lt;/h2>
&lt;p>We hope that you find these tips helpful. Even for us, a seasoned remote-first team, improving our productivity, efficiency, and happiness is a perpetual process. We’re constantly redefining our own best practices, habits, and workflows.&lt;/p>
&lt;p>Our most important tip for how to apply these recommendations is to be introspective and flexible. At the end of the day, we can’t give any one-size-fits-all advice because it doesn’t exist. Take the time as a team to listen to your own needs and pain points and adapt solutions accordingly. You’ll quickly find that you’ll develop norms that work for your style, culture, and situation.&lt;/p>
&lt;p>We’d love to hear in the comments what things work for you and your team!&lt;/p>
&lt;p>&amp;ndash;&lt;/p>
&lt;h2 id="reply">Reply&lt;/h2>
&lt;p>Follow the conversation and discuss on Twitter.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">Want to know how &lt;a href="https://twitter.com/kaggle?ref_src=twsrc%5Etfw">@kaggle&lt;/a> does remote-first? &lt;a href="https://twitter.com/vimota?ref_src=twsrc%5Etfw">@vimota&lt;/a> and I share our top 5 remote-first tips for teams new to working from home! &lt;a href="https://twitter.com/hashtag/remotework?src=hash&amp;amp;ref_src=twsrc%5Etfw">#remotework&lt;/a> &lt;a href="https://t.co/c5HPDVUT9q">https://t.co/c5HPDVUT9q&lt;/a>&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1243578237994692608?ref_src=twsrc%5Etfw">March 27, 2020&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script></description></item><item><title>Productive transparency in online communities: Inspiration from trains and IKEA</title><link>https://www.meg.dev/posts/transparency-in-online-communities/</link><pubDate>Wed, 22 Jan 2020 22:16:30 -0500</pubDate><author>hello@meg.dev (Meg Risdal)</author><guid>https://www.meg.dev/posts/transparency-in-online-communities/</guid><description>&lt;p>The Japanese train system is famously fast, clean, friendly, and efficient. On the drive home from my first day back at Google I was reminded of why as I listened to the &lt;em>99% Invisible&lt;/em> podcast episode &lt;em>&lt;a href="https://99percentinvisible.org/episode/wait-wait-tell-me/">“Wait wait &amp;hellip; tell me!”&lt;/a>&lt;/em>. I’ll give you the tl;dr summary of the story and explain some connections I made to product development for online communities that got me so in my head I missed my exit for the 405.&lt;/p>
&lt;p>One of the secrets to Japan’s impressive system of bullet trains, called &lt;a href="https://en.wikipedia.org/wiki/Shinkansen">Shinkansen&lt;/a>, is simple. It’s the kind of elegant solution I dream of and representative of the values I hold as a product and community person. In order to improve rider satisfaction with wait times while trains were cleaned, the new CEO of Shinkansen didn&amp;rsquo;t sacrifice quality. Instead he introduced transparency between workers who cleaned trains and waiting customers. He did this by literally making workers more visible (e.g., bright red uniforms) instead of intentionally invisible (pale blue uniforms that blend in with their environs). Beyond physical appearances alone, he also encouraged workers to actually speak with passengers.&lt;/p>
&lt;p>Making their work more visible in these ways had profound effects on behaviors in the system between workers and waiting passengers. Namely, passengers:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Were less frustrated by wait times because they could better see and understand the purpose of waiting&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Empathized with workers to the point of being more conscientious by proactively cleaning up their own messes&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>With this transparency, passengers were empowered with insight into the common interests between themselves and workers. They not only tolerated the extra wait as workers cleaned trains, they embraced it. And no one had to tell them “because it’s good for you.” Additionally, Shinkansen was able to maintain high standards of cleanliness.&lt;/p>
&lt;p>In a conversation with a friend about the Shinkansen train system story, he brought up IKEA’s cafeterias. The ones with the amazing Swedish meatballs and lingonberry sauce. Where you bus your own table. Not only is a DIY approach appropriate here (it’s IKEA!), they make it consistently transparent throughout the diner’s “user journey” so there’s no room for unmet expectations for Michelin-grade experiences. And it goes beyond signs everywhere. The carts where you stash your emptied trays are an unmissable centerpiece of the cafe. In most places they are hidden out of sight.&lt;/p>
&lt;p>&lt;img src="https://images.unsplash.com/photo-1517816630506-a8c5ccf61bf0?ixlib=rb-1.2.1&amp;amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;amp;auto=format&amp;amp;fit=crop&amp;amp;w=1050&amp;amp;q=80" alt="Blue and yellow IKEA building">
&lt;em>&lt;a href="https://unsplash.com/photos/KDawdoaC-ts">Photo by Oleg Laptev&lt;/a>&lt;/em>&lt;/p>
&lt;p>In &lt;a href="https://mrisdal.github.io/blog/posts/reflections-on-stack-overflow/">my blog post&lt;/a> reflecting on my time leading product for Stack Overflow’s public Q&amp;amp;A, I alluded to tensions among different types of users. Curators and moderators and question-askers and question-answerers. One of the things that I think is well appreciated by moderators and curators (and probably many question-answerers, too) is the importance of the quality of content that gets created and maintained over time. Interestingly, question-askers (mostly new users) are the driving force behind content creation on Stack Overflow, yet often their local and immediate needs may not make the quality of the entire repository present in mind. The tension, in part, in my opinion is a lack of transparency between integral parts of the system (people!) that could be communicating.&lt;/p>
&lt;p>If the flow a question enters when it&amp;rsquo;s closed was more transparent, would that help people understand why it happens? If people saw how content reviews help keep up a healthy ecosystem of question and answer pairs, would they more eagerly contribute to review themselves? What if the average user knew that without a small number of volunteer moderators handling flagged content toxicity would be double what it is?&lt;/p>
&lt;p>I’ve long thought that much of Kaggle’s relative welcomingness as an online technical community is its inherent temporal transparency between power users and newcomers. This started with &lt;a href="https://www.kaggle.com/competitions">Competitions&lt;/a>. Each Competition which runs for a couple of months is a new shared objective for new and old users alike to collaborate and share ideas. Each competition generates a cohort that’s basically a community of practice with a deadline. Once it’s over, users often write-up their approaches (&lt;a href="https://www.kaggle.com/c/ashrae-energy-prediction/discussion/124984">example&lt;/a>), sharing what they learned with the community. And then they start all over again with the next competition. Over time, each user is on a cycling trajectory from novice to expert and there’s always some new technique or framework to learn as the state of the art in machine learning evolves. I really believe it&amp;rsquo;s visibility and participation in constantly cycling cohorts with shared goals that make it easier for users of all levels to better empathize.&lt;/p>
&lt;p>In an online community, you need to find ways to foster and incentivize ways to encourage different types of users to interact positively and contribute to your mission. I believe that transparency, especially by making shared goals and opportunities to empathize apparent in the product itself, can be an important way to achieve this.&lt;/p>
&lt;p>&lt;em>Thank you once again to Josh Heyer (AKA Shog9) for his feedback on this post (and for talking to me about delicious lingonberry sauce). Thanks also to my fellow Kaggle Noobs moderators (Aakash, Yifan, Mikel, Jorge) for their discussion on this topic.&lt;/em>&lt;/p>
&lt;p>&amp;ndash;&lt;/p>
&lt;h2 id="reply">Reply&lt;/h2>
&lt;p>Follow the conversation and discuss on Twitter.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">I wrote up some thoughts on transparency in online communities. 👀🤗 &lt;a href="https://t.co/b4rEd0VA2i">https://t.co/b4rEd0VA2i&lt;/a>&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1220193165535170560?ref_src=twsrc%5Etfw">January 23, 2020&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script></description></item><item><title>My Year in Review, 2019</title><link>https://www.meg.dev/posts/my-2019/</link><pubDate>Wed, 11 Dec 2019 02:29:15 -0500</pubDate><author>hello@meg.dev (Meg Risdal)</author><guid>https://www.meg.dev/posts/my-2019/</guid><description>&lt;p>This is my own year-in-review. What started as a dumb tweet has become a blog post because I&amp;rsquo;m between jobs. Enjoy!&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">My 2019:&lt;br>&lt;br>📽️ Film - Society (1989)&lt;br>🎶 Song - Sandwich, Marco Minnemann (2016)&lt;br>💽 Record - In the Court of the Crimson King (50th anniversary) King Crimson (2019)&lt;br>📚 Book - Our Mathematical Universe, Max Tegmark (2014)&lt;br>🎮 Game - Untitled Goose (2019)&lt;br>🎙️ Podcast - SYSK (2008-2019)&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1204635323474432003?ref_src=twsrc%5Etfw">December 11, 2019&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;h2 id="top-film">Top film&lt;/h2>
&lt;h3 id="society-1989">Society (1989)&lt;/h3>
&lt;p>My husband had described &lt;em>Society&lt;/em> (dir, Brian Yuzna) to me a few years ago and I don&amp;rsquo;t think I really absorbed much because it didn&amp;rsquo;t seem believable or something. It&amp;rsquo;s pretty trippy! Here&amp;rsquo;s the snippet from Wikipedia:&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>A Beverly Hills teen (Billy Warlock) discovers his parents are part of a gruesome orgy cult for the social elite.&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;p>As a big fan of body horror, though, I knew I had to see it at some point This year (probably during &lt;em>Beyond Fest&lt;/em>) we had the fortune of seeing it at &lt;em>The Egyptian Theater&lt;/em> in Hollywood. It&amp;rsquo;s great. Wicked! Believe it.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/inrBU8juGI8" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;p>I only recently started using &lt;a href="https://letterboxd.com/mrisdal/films/diary/">Letterboxd&lt;/a> again to track my films, but some other good ones from this year:&lt;/p>
&lt;ul>
&lt;li>&lt;em>Greener Grass&lt;/em> (2019) - David Lynch plus SNL. Yes? Yes.&lt;/li>
&lt;li>&lt;em>Knives Out&lt;/em> (2019) - Just a lot of fun!&lt;/li>
&lt;/ul>
&lt;h2 id="top-record">Top record&lt;/h2>
&lt;h3 id="in-the-court-of-the-crimson-king-50th-anniversary---king-crimson-2019">In the Court of the Crimson King, 50th anniversary - King Crimson (2019)&lt;/h3>
&lt;p>I had a friend in college who was obsessed with &lt;em>King Crimson&lt;/em>. I didn&amp;rsquo;t get much into them myself at the time, but they were an &lt;a href="https://en.wikipedia.org/wiki/King_Crimson#Influence">influence&lt;/a> on basically everything else I listen to. &lt;em>Porcupine Tree&lt;/em> / &lt;em>Steven Wilson&lt;/em>, &lt;em>The Mars Volta&lt;/em>, &lt;em>Opeth&lt;/em>, &lt;em>Between the Buried and Me&lt;/em>, &lt;em>Mastodon&lt;/em>, &lt;em>Oranssi Pazuzu&lt;/em>, etc. etc. etc. You get it. Oh, and one of the
three (3) drummers in their current line-up is Gavin Harrison, drummer for &lt;em>Porcupine Tree&lt;/em> (since broken-up).&lt;/p>
&lt;p>So, when &lt;em>King Crimson&lt;/em> were on their 50th anniversary tour and making a stop at &lt;em>The Greek Theater&lt;/em> in Los Angeles, of course I had to go out of reverence. Wow. I was totally and completely blown away. Despite the tourist next to me using his phone / camera (a BIG no-no for Robert Fripp). Perhaps life-changing in that I&amp;rsquo;ve been obsessively listening to &lt;em>KC&lt;/em> ever since.&lt;/p>
&lt;p>Anyway, my favorite album is the 50th anniversary remix of &lt;em>In the Court of the Crimson King&lt;/em>. The remix is done by Steven Wilson (of course). And &lt;em>Epitaph&lt;/em> is still (sadly) the best song for these times.&lt;/p>
&lt;blockquote>
&lt;p>Knowledge is a deadly friend&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>If no one sets the rules&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>The fate of all mankind, I see&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Is in the hands of fools&lt;/p>
&lt;/blockquote>
&lt;p>It&amp;rsquo;s not from this album of course, but here&amp;rsquo;s &lt;em>Starless&lt;/em> live.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/FhKJgqxNDD8" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;p>Other music I listened to a lot of:&lt;/p>
&lt;ul>
&lt;li>&lt;em>Agalloch&lt;/em> - I discovered them this year &amp;hellip; so GOOD.&lt;/li>
&lt;li>&lt;em>The Aristocrats&lt;/em> - Guthrie Govan is amazing.&lt;/li>
&lt;li>&lt;em>Deafheaven&lt;/em> - So different, but gorgeous warm black metal feels.&lt;/li>
&lt;/ul>
&lt;h2 id="top-song">Top song&lt;/h2>
&lt;h3 id="sandwich-marco-minnemann-2016">Sandwich, Marco Minnemann (2016)&lt;/h3>
&lt;p>This song is just fun. Any time it pops into my head (which to the dismay of my husband is probably too often) I have to play it. Marco Minnemann is a great drummer. Maybe you&amp;rsquo;ve heard of him. He&amp;rsquo;s associated with &lt;em>Steven Wilson&amp;rsquo;s band&lt;/em> (not anymore, but it&amp;rsquo;s how I came to know him), &lt;em>Necrophagist&lt;/em>, &lt;em>The Aristocrats&lt;/em>, and he auditioned for &lt;em>Dream Theater&lt;/em>.&lt;/p>
&lt;p>Check out the music video for &lt;em>Sandwich&lt;/em>. &lt;em>Don&amp;rsquo;t you know how to eat a sandwich?&lt;/em>&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/wNjrj3BFlXc" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;p>Other top songs:&lt;/p>
&lt;ul>
&lt;li>&lt;em>Epitaph, King Crimson&lt;/em> - Already mentioned but bears rementioning.&lt;/li>
&lt;li>&lt;em>Black Lake Niðstång, Agalloch&lt;/em> - It&amp;rsquo;s worth 17 minutes. Some of the most soulful black metal screaming of life (death?).&lt;/li>
&lt;/ul>
&lt;h2 id="book">Book&lt;/h2>
&lt;h3 id="our-mathematical-universe-max-tegmark-2014">Our Mathematical Universe, Max Tegmark (2014)&lt;/h3>
&lt;p>A couple of years ago I caved and started listening to audiobooks. This plus a pair of bluetooth headphones I like (Jabra Elite 65t) has led to a big increase in the number of books I manage to &amp;ldquo;read&amp;rdquo; each year. It definitely makes up for the guilty feelings I harbor for not being a legitimate book snob. Just kidding. I don&amp;rsquo;t care.&lt;/p>
&lt;p>So this year my favorite book is &lt;a href="https://www.amazon.com/Our-Mathematical-Universe-Ultimate-Reality/dp/0307599809">&lt;em>Our Mathematical Universe&lt;/em> by Max Tegmark&lt;/a>. I&amp;rsquo;m a pretty big pop astronomy / physics nerd, and this book is so out there it blew my mind. In so many ways. What do &amp;ldquo;real&amp;rdquo; physicists think of this book?! If you&amp;rsquo;re into multiverses, reality, consciousness, and wild speculation, check it out. If you want just a taste, Max Tegmark made a recent appearance on Sean Carroll&amp;rsquo;s podcast, &lt;a href="https://www.preposterousuniverse.com/podcast/">&lt;em>Mindscape&lt;/em>&lt;/a>, in &lt;a href="https://www.preposterousuniverse.com/podcast/2019/12/02/75-max-tegmark-on-reality-simulation-and-the-multiverse/">Episode #75&lt;/a>.&lt;/p>
&lt;iframe src="https://art19.com/shows/sean-carrolls-mindscape/episodes/f48de2b5-e16e-4d09-bc56-a34fb5fcecd3/embed?theme=dark-blue" style="width: 100%; height: 200px; border: 0 none;" scrolling="no">&lt;/iframe>
&lt;p>Apart from physics, I really love a good corporate scandal novel (yes, &lt;em>Bad Blood&lt;/em>, yes, &lt;em>Super Pumped&lt;/em>), so next year I expect my favorite book will be about WeWork (fingers crossed).&lt;/p>
&lt;h2 id="game">Game&lt;/h2>
&lt;h3 id="untitled-goose-2019">Untitled Goose (2019)&lt;/h3>
&lt;p>What more do I need to say?! &lt;em>Untitled Goose&lt;/em> was a lot of fun. I had a hard time picking between this and &lt;em>Katamari Reroll&lt;/em>. Delightfulness and ease-of-play were the things that tipped things in favor of the goose for me.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/9STHqt_vsCc" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;p>Some other games worth mentioning:&lt;/p>
&lt;ul>
&lt;li>&lt;em>Skyrim&lt;/em> - Whenever I get a new gaming system I buy &lt;em>Skyrim&lt;/em>. I will never not play this game.&lt;/li>
&lt;li>&lt;em>Super Smash Bros Ultimate&lt;/em> - This was a lot of fun to play with my husband&amp;rsquo;s son (11yo).&lt;/li>
&lt;li>&lt;em>Pokemon Sword&lt;/em> - I just started playing this! It&amp;rsquo;s a lot of fun.&lt;/li>
&lt;/ul>
&lt;h2 id="podcast">Podcast&lt;/h2>
&lt;h3 id="stuff-you-should-know-2008-2019">Stuff You Should Know (2008-2019)&lt;/h3>
&lt;p>Prior to this year I hadn&amp;rsquo;t listened to a ton of podcasts since college. What changed? Not sure, but &lt;em>Stuff You Should Know&lt;/em> is now a staple for me. My husband don&amp;rsquo;t have overlapping tastes really except we can both get into a random &lt;em>SYSK&lt;/em> episode about jellyfish on our way to &lt;em>The Dynasty Typewriter&lt;/em> to see &lt;em>Harmontown&lt;/em> (a podcast I don&amp;rsquo;t listen to that we would go see live). We also listened to a bunch of episodes on our mini-roadtrip between LA and Santa Cruz.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/fVZyh5W63rM" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;p>Here&amp;rsquo;s a couple of other podcasts I got into:&lt;/p>
&lt;ul>
&lt;li>&lt;em>Jorge and Daniel Explain the Universe&lt;/em> - Just fun! Remember, I&amp;rsquo;m a pop-physics nerd.&lt;/li>
&lt;li>&lt;em>Radiolab&amp;rsquo;s More Perfect&lt;/em> - I devoured this in a couple of weeks and I&amp;rsquo;m sad there aren&amp;rsquo;t new ones.&lt;/li>
&lt;/ul>
&lt;p>&amp;ndash;&lt;/p>
&lt;h2 id="reply">Reply&lt;/h2>
&lt;p>Follow the conversation and discuss your favs on Twitter.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">Here&amp;#39;s my fav films, music, and more in my year in review! &lt;a href="https://t.co/yS1H1wztq6">https://t.co/yS1H1wztq6&lt;/a>&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1204680916162891776?ref_src=twsrc%5Etfw">December 11, 2019&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script></description></item><item><title>Reflections on Stack Overflow: Building Successful Communities</title><link>https://www.meg.dev/posts/reflections-on-stack-overflow/</link><pubDate>Fri, 06 Dec 2019 00:48:59 -0500</pubDate><author>hello@meg.dev (Meg Risdal)</author><guid>https://www.meg.dev/posts/reflections-on-stack-overflow/</guid><description>&lt;p>Today is my last day at Stack Overflow. For most of this year, I was the lead product manager for their flagship product, public Q&amp;amp;A. In my last couple of weeks there, I spent some time reflecting on what I have learned and how my perspectives as a product leader matured. As someone deeply invested in building open developer communities, I continue to refine my opinions about how to approach building community-facing products.&lt;/p>
&lt;p>Based on these reflections, the following is my own personal perspective on what a product leader at a place like Stack Overflow can do to be successful (and hence make community products successful). Although they are pretty specific to Stack Overflow, I am taking what I’ve learned with me to my next endeavor and you may find them applicable to your world, too.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Make Stack Overflow work for &lt;strong>everyone&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Be ambitious and a driver of positive change in the face of inertia.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The community is an asset. Experiment, iterate, and listen.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Create simple defaults and tear down configuration and customization.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Keep the mission and impact in perspective always.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="building-a-successful-community">Building a successful community&lt;/h2>
&lt;h3 id="make-stack-overflow-work-for-everyone-do-not-indulge-us-versus-them-dynamics">Make Stack Overflow work for everyone. Do not indulge “us versus them” dynamics.&lt;/h3>
&lt;p>There are many types of people who use Stack Overflow. The main segments for Public Q&amp;amp;A are: Askers (including people who just look up answers to existing questions), Answerers, Curators, and Moderators. The interesting thing about Stack Overflow’s user base though is that all of these segments (of real people!) interact with each other in feedback loops:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>People ask questions and other people answer those questions&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Curators identify quality issues and other people receive that feedback&lt;/p>
&lt;/li>
&lt;li>
&lt;p>People flag content that doesn’t belong on the site and moderators handle those flags&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>Any initiatives that only serve one segment put the community and product into imbalance. In reality you’re making changes in a complex, dynamical system of real people in a community. Emphasizing one type of user also makes things unnecessarily personal. By “personal” I mean about people, not about the system/software. I observed that this triggers an “us versus them” backlash which is not necessary and causes users to suffer. Instead, focus on the system itself and how all different kinds of users participate in it to interact with each other. I believe that this is an approach that will inherently make Stack Overflow more welcoming.&lt;/p>
&lt;p>&lt;img src="https://lh6.googleusercontent.com/dUf-m_ircDT_3QXoWEnrVqZqv6FFPSvBHz8UOmSYKT8l2S_R4SQQaaXK35XJKpa9cK1CLM_XCq7Stet6M2Xktq17Id94uK88sZs282LvXhJ2L0pJlBxEjApSujLK8QSzw6YUXZZZ" alt="">&lt;/p>
&lt;p>Here are some things I kept in mind when thinking about how to make Stack Overflow work for everyone:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;em>Always ask “How does this impact users?”&lt;/em>. In specs/briefs I write, I always explicitly consider all participants in the relevant feedback loop. Going through this motion can uncover unanswered questions, highlights your thought process for readers, develops a muscle for user-focus.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;em>Treat everyone as a valuable person as part of the system&lt;/em>. Even if I’m working on something mainly designed to help one type of user, it can go a LONG ways both internally and externally to demonstrate care for everyone. Other people will pick sides or favorites, but you as the chief advocate for your users cannot succumb to this.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;em>Think holistically&lt;/em>. I tend to like to think of user journeys in product work. For a given feature, how did users arrive there? What’s the next step? Considering all participants at each touchpoint in a user journey is a natural extension of this thinking.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="be-ambitious-and-a-driver-of-positive-change-in-the-face-of-inertia-exude-optimism">Be ambitious and a driver of positive change in the face of inertia. Exude optimism.&lt;/h3>
&lt;p>The team focused on public Q&amp;amp;A is shockingly small: four IC developers. And the surface area of responsibility is enormous: all of Stack Overflow and the Stack Exchange network serving millions of people every month. Stack Overflow is a &lt;a href="https://www.alexa.com/topsites">top 50 site in Alexa rankings&lt;/a>. Having the impact the user base needs and deserves requires efficient use of resources paired with a healthy openness to risk. Otherwise it’s too easy to slip into conservative bug-fixing mode to just keep the status quo afloat.&lt;/p>
&lt;p>The good news is that the team is super capable when pushed to dream big. When I joined in early 2019, we made 7 internal commitments of which only 28% were hit. In October, we made 31 internal commitments and hit an 84% completion. This was possible despite receiving no additional developer resources during this timeframe.&lt;/p>
&lt;p>Here are some tips for keeping functional teams productive and engaged:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;em>Constantly clarify ambiguities&lt;/em>. The biggest thing a product manager can do to help team productivity is clarify ambiguities. In the face of chaos or shifting priorities, the best thing you can do is make sure to shield the team as much as possible so they can stay focused on productive project work. In the day to day, stay engaged with what they’re working on and answer their questions.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;em>Accentuate the positive&lt;/em>. This team has historically been subjected to a lot of strife. Be empathetic, but do your best to sincerely highlight successes and positive motivators.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;em>Connect the team with end users&lt;/em>. Making the team clearly see how their work has impact is a morale boost and motivator. Some ways to do this include inviting developers to join user interviews, reviewing and discussing research with a broad group of people, and holding project retrospectives that include preliminary data on feature performance. In a small example, I always included a user quote in the team’s weekly company-wide report.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="the-community-is-an-asset-experiment-iterate-and-listen-to-your-users-the-whole-time">The community is an asset. Experiment, iterate, and listen to your users the whole time.&lt;/h3>
&lt;p>Rapid experimentation, incremental releases, and iteration is an opportunity to keep a dialogue with your users open. It’s a venue for you to not only involve them in the conversation, but to shape it by sharing and aligning on goals. Like I once told a coworker, “We’re both on different vectors. I share mine with you and you share yours with me and we both get a little closer and amplify our efforts.”&lt;/p>
&lt;p>A number of examples of this approach took place as part of our bigger efforts to improve experiences related to question closing. In one recent project, we worked to &lt;a href="https://meta.stackexchange.com/questions/337013/new-post-notices-rollout-on-stack-overflow">ship the new post notices feature early&lt;/a> and we were responsive to feedback from users. This led to making lots of small improvements before &lt;a href="https://meta.stackexchange.com/questions/339700/new-post-notices-are-live-network-wide">rolling the change out more broadly&lt;/a>. In another example, we &lt;a href="https://meta.stackoverflow.com/questions/388313/experiment-ended-closing-and-reopening-happens-at-3-votes-for-the-next-30-day">engaged the community closely&lt;/a> in testing different thresholds for voting to close and reopen questions, including &lt;a href="https://meta.stackoverflow.com/questions/390083/threshold-experiment-results-closing-editing-and-reopening-all-become-more-eff">transparently sharing&lt;/a> the &lt;a href="https://dev.to/stackoverflow/experiment-results-testing-close-reopen-thresholds-on-stack-overflow-5a35">results of our experiments&lt;/a>.&lt;/p>
&lt;p>&lt;img src="https://lh4.googleusercontent.com/MAKHGYl_QDfLybaA-x6I5adBck2kCXvchwVJqWv319TBIrb9hibjlDOjO7aZ8s9UrKfsHWISpE10udrKDKQ2QQyBl20bv683P5neVj4umt5zpere-0uWfvqa8ljT9jJzOKAE1zK4" alt="">&lt;/p>
&lt;p>Stack Overflow is a website with a huge user base. Not taking advantage of the ability to run tests and get feedback from enthusiastic community members is a missed opportunity. Do it in complement with other research methods. At the same time, these feedback loops threaten to slow things down and can be emotionally draining. Your mileage may vary (and a lot seems to depend on individual tastes), but here are some quick tips:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;em>Don’t take things personally&lt;/em>. You’ll get a lot of critique, positive and negative. As a product manager you have to emotionally separate yourself from the features you work on as much as possible. Instead, invest your energy into focusing on the objectives you share with end users and other stakeholders.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;em>Delegate communication&lt;/em>. It can be exhausting and extremely time consuming to interact deeply with a critical audience. Lean on people who are experts at this. For example, you can try strategies like ghostwriting blog posts or asking others to synthesize feedback for you in a report.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;em>Take a principled stance&lt;/em>. Decision-making is easier when you already have clear objectives and guiding product principles to use as heuristics. So form these early and lean on them aggressively to quickly resolve feedback rather than debating minutiae at length.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>Where appropriate, experimenting and iterating on ideas in public is also a great way to battle harden new features before introducing them to Teams customers, &lt;a href="https://stackoverflow.com/teams">Stack Overflow’s Private Q&amp;amp;A product&lt;/a>. If something is successful at Stack Overflow’s scale, it may work for a company’s internal knowledge management, too.&lt;/p>
&lt;h3 id="create-simple-defaults-and-tear-down-configuration-and-customization-do-not-try-to-please-everyone">Create simple defaults and tear down configuration and customization. Do not try to please everyone.&lt;/h3>
&lt;p>Stack Overflow is too complex. It’s hard to use for people who are not power users, it’s difficult to maintain for engineers, and it’s a challenge to design and build changes that work around tons of variants. This is not sustainable for such a small team with a huge mandate. For example, take &lt;a href="https://stackoverflow.com/users/8157789/megan-risdal?tab=profile">user profiles&lt;/a>. They’re a mess of information overload, they’re bogged down with tons of settings and togglable preferences (some only used by a tiny number of people), and users can maintain unique profiles for each and every network site that they’re a member of. Then there’s the overall network profile. And chat profiles. Then profiles for Teams (private Q&amp;amp;A), too. Oh, and they’re not mobile responsive. Yuck.&lt;/p>
&lt;p>&lt;img src="https://lh5.googleusercontent.com/MIAbOqg_Uccnlufi4Ubuos2FTc1fCe-1r1ZF2XUHu3eknZnGiN_Xg6B5WJMkp8RW54ILnF1V0WveZJgiNlVDXrWKnE-bPUnmvomfIUwzoNoiQXk0Kh3rlb7QGUfgjL8K9YB2Nizw" alt="">&lt;/p>
&lt;p>Taking things away by simplifying them will be hard, but it’s necessary for the future of Stack Overflow. When I first joined Stack Overflow in March, the team launched the new &lt;a href="https://stackoverflow.blog/2019/08/22/impact-of-ask-question-wizard/">Ask Question Wizard&lt;/a>. This created a whole new default question-asking flow for users with less than 111 reputation while other users had the old (10 years old) form intact.&lt;/p>
&lt;p>The UX of the wizard was clunky. We heard this in feedback from a random sample of people who responded to our new monthly site satisfaction survey. And maintaining it AND the existing form was an immediate timesuck as we battled bugs and strange edge cases arising from technical workarounds required to support this complex feature. It wouldn’t surprise me if its measurable benefits actually stemmed from how hard it was to use. Therefore, we went back to the drawing board, taking what we learned from the wizard &lt;a href="https://stackoverflow.blog/2019/09/26/research-update-improving-the-question-asking-experience/">plus additional research&lt;/a>, and launched a redesign of the question-asking form for everyone. The data (&lt;a href="https://stackoverflow.blog/2019/11/12/research-update-a-b-testing-the-new-question-form/">quantitative&lt;/a> and qualitative) and increased simplicity led us to consider it a huge improvement. Plus, it’s now way easier to iterate on (since of course it’s still not perfect!).&lt;/p>
&lt;p>Do more to reduce forking paths and little used customizations. It’s not realistic to continue supporting these given extremely constrained resources and minimal benefit to users.&lt;/p>
&lt;blockquote>
&lt;p>“This web of time – the strands of which approach one another, bifurcate, intersect or ignore each other through the centuries – embraces every possibility. We do not exist in most of them. In some you exist and not I, while in others I do, and you do not.”&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>― Jorge Luis Borges, &lt;a href="https://www.goodreads.com/work/quotes/14566729">The Garden of Forking Paths&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;p>Here are some tips for approaching this:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;em>Make data-driven decisions&lt;/em>. Use data (quantitative and qualitative) at every level to inform how you solve this problem. Use data to prioritize which things to tackle first and then use data to decide what configurations are most important, for instance.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;em>Involve all stakeholders in decision-making&lt;/em>. You really, really have to know who is dependent on something and how when you’re planning to take it away. Make sure to involve the right people in the conversation and, as much as possible, share the same data you have access to (and invite them to ask new questions, too).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;em>Have empathy&lt;/em>. Loss aversion is a very real thing. Even if simplifying something is the best thing for users by all other accounts, taking something away still hurts. And this impacts not just end users, but the people who originally worked on a feature. You can have empathy by understanding how they use the feature and asking about the historical context around its original creation.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="keep-the-mission-and-impact-in-perspective-always">Keep the mission and impact in perspective always.&lt;/h3>
&lt;p>With respect to mission, a lot of people are passionate about Stack Overflow and its community. There are a lot of loud voices and strong opinions pulling in many directions. Do what you can to keep focus on the bigger picture, both inside the team and externally. In this period of transition for the company, the mission is still being honed, but here are some things I personally believe to be important:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Stack Overflow is a source of high quality question and answer pairs&lt;/strong>. Do things that continue to grow this content, enrich it, and make it easier to access and use for all developers. But, Stack Overflow is not equivalent to Wikipedia. It’s not made up of facts frozen in time. More than a traditional encyclopedia, relevant information and practices in Stack Overflow’s community change as the developer landscape evolves. Make Stack Overflow a living, evolving library. It will never be “done”.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Make Stack Overflow for all developers&lt;/strong>. It started as a place to serve programming enthusiasts and this was a successful way to catalyze the creation of a community and corpus of technical knowledge. Over time, it has clearly shown potential to make lives better for anyone who writes code. Figure out how to make Stack Overflow a place where anyone in the world who codes has a place to participate and learn.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>With respect to impact, this is where it’s all too easy to fall into a trap of listening only to a small minority of people who enthusiastically offer their voices. These voices are super important to be sure, but they need to be balanced. In my time at Stack Overflow, we put a lot of effort into filling gaps in who we listened to. The vast majority of people who use Stack Overflow don’t have accounts (or aren’t logged-in) yet we had virtually no way to hear from them until we launched a &lt;a href="https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43221.pdf">satisfaction tracking survey&lt;/a> last summer. At the same time, we also strengthened ties between Community Management and product as a way to more scalably incorporate feedback from highly engaged users into the work we prioritized. They need to have a seat at the table in all of major feature work in order to continue to have a big impact on the solutions the team designs. They are experts on different types of user segments as well as the system and are critical to building Stack Overflow to better serve everyone.&lt;/p>
&lt;p>Continue keeping impact in perspective and strive to better serve the needs of all types of users. It’s difficult, painful work because limited resources means important people may feel ignored. But I have confidence that progress will continue to be made on this front.&lt;/p>
&lt;h2 id="in-conclusion">In conclusion&lt;/h2>
&lt;p>These beliefs are a reflection of my own personal values as a growing product leader who’s passionate about building great experiences for global developer communities, and as someone who has a great deal of optimism about the future of Stack Overflow. If I had to sum them up, I’d say I believe in unrelenting user focus and optimizing for global, rather than local, minima. I’m excited to take these values, along with everything I learned at Stack Overflow, with me in my next adventure: rejoining the &lt;a href="https://www.kaggle.com/">Kaggle&lt;/a> team at Google.&lt;/p>
&lt;p>&lt;em>Thank you to Shog9, Donna Choi, and Julia Silge for their feedback on drafts of this post.&lt;/em>&lt;/p>
&lt;p>&amp;ndash;&lt;/p>
&lt;h2 id="reply">Reply&lt;/h2>
&lt;p>Follow the conversation and discuss on Twitter.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">Read my reflections on Stack Overflow and how my product thinking around building for communities has matured &lt;a href="https://t.co/FCKEXDlLKi">https://t.co/FCKEXDlLKi&lt;/a>&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1203000660817367041?ref_src=twsrc%5Etfw">December 6, 2019&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script></description></item><item><title>My Interview with Superlinguo: Linguists in Careers</title><link>https://www.meg.dev/posts/superlinguo-interview/</link><pubDate>Fri, 06 Dec 2019 00:29:18 -0500</pubDate><author>hello@meg.dev (Meg Risdal)</author><guid>https://www.meg.dev/posts/superlinguo-interview/</guid><description>&lt;p>&lt;em>This is &lt;a href="https://www.superlinguo.com/post/188176778397/linguistics-jobs-interview-with-a-product-manager">cross-posted from an interview I recently did with Superlinguo&lt;/a>, a language and linguistics blog by Lauren Gawne, for her excellent linguists in careers series.&lt;/em>&lt;/p>
&lt;p>From Lauren:&lt;/p>
&lt;blockquote>
&lt;p>A lot of tech people I know say “the best skill a programmer can have is knowing how to look up the right answer on Stack Exchange” It’s one of those websites that people use every day, but perhaps without thinking about how it gets built. Megan Risdal is one of the people who make Stack Overflow happen, as a Product Manager leading Public Q&amp;amp;A. As Megan mentions below, there’s even a &lt;a href="https://linguistics.stackexchange.com/">Linguistics Stack Exchange&lt;/a> (you might just see some old &lt;a href="https://linguistics.stackexchange.com/users/64/laureng">answers from me&lt;/a> there). Megan has not only forged a career for herself in tech, she helps demystify the industry for other linguists who might follow in her footsteps, on Twitter (@MeganRisdal) and her &lt;a href="meg.dev">blog&lt;/a>.&lt;/p>
&lt;/blockquote>
&lt;p>&lt;img src="https://66.media.tumblr.com/05270b919fb9c719ff5cd491b37cbc67/16001c6a0b1b48e1-83/s500x750/b18e006454ce10d5d11c582767ff40371240094d.jpg" alt="image">&lt;/p>
&lt;h2 id="what-did-you-study-at-university">What did you study at university?&lt;/h2>
&lt;p>My undergraduate degree is in Psychology from the &lt;a href="https://www.uwec.edu/">University of Wisconsin, Eau Claire&lt;/a> where my interests were in &lt;a href="https://en.wikipedia.org/wiki/Differential_psychology">individual differences&lt;/a>. I also did a minor in French and this is where I first learned about linguistics as a field of study. My combined interests in language and individual differences psychology led me to completing a senior thesis project on variation in attitudes towards linguistic diversity. Just last year this work was published with my then advisor, &lt;a href="https://www.uwec.edu/profiles/bensonej/">Dr. Erica Benson&lt;/a>, as a chapter in &lt;em>&lt;a href="https://www.cambridge.org/us/academic/subjects/languages-linguistics/sociolinguistics/language-regard-methods-variation-and-change?format=HB">Language Regard: Methods, Variation, and Change&lt;/a>&lt;/em>.&lt;/p>
&lt;p>From here, I did a Master’s degree in Sociolinguistics at &lt;a href="https://www.ncsu.edu/">North Carolina State University&lt;/a>. Building on my statistics background from studying psychology, I dove deeper into quantitative methods, learning R along the way, while focusing on sociophonetics and laboratory phonology. For my capstone project, I measured articulatory (ultrasound tongue imaging), aerodynamic, (nasal/oral airflow), and acoustic variation in coarticulatory vowel nasalization strategies among Anglo-American and African American (Vernacular) English speakers.&lt;/p>
&lt;p>Finally, I started a PhD at &lt;a href="http://www.ucla.edu/">UCLA&lt;/a> where I intended to continue studying laboratory phonology. I only ended up finishing one year which was spent on theoretical foundations, articulatory phonetics, and learnability before leaving with a second Master’s degree in Linguistics. I ended up deciding to leave academia because I was disillusioned already with the prospect of the job market and the limited potential for my work to have impact beyond academia. I made my mind up when I applied for a job at Google and got an interview. I ultimately failed, but this was enough for me to feel confident my resume was “good enough” (completely incidentally I ended up later getting hired and working at Google for a couple of years prior to my current role).&lt;/p>
&lt;h2 id="what-is-your-job">What is your job?&lt;/h2>
&lt;p>For the past six months I’ve been working as a Product Manager at &lt;a href="https://stackoverflow.com/">Stack Overflow&lt;/a> where I lead the team working on public Q&amp;amp;A. If you’re not familiar with Stack Overflow, it’s a site where anyone who codes can come to find answers to their programming questions. We also have the Stack Exchange network which has similar Q&amp;amp;A sites for other topics like cooking and anime. There’s even a &lt;a href="https://linguistics.stackexchange.com/">Linguistics Stack Exchange&lt;/a> site.&lt;/p>
&lt;p>In my day-to-day, as a product manager, I work closely with our developers, designers, researchers, data scientists, community managers, marketing, and leadership. So, it’s a lot of meetings and a lot of Google Docs. My job entails taking many, many inputs and synthesizing them into a strategy and product roadmap that the team executes on to make Stack Overflow a more useful, engaging place for all developers. On a given day, you could catch me writing a new feature specification for a developer, reviewing results of an experiment with our data scientists, or dropping in on user interviews. One of the things I love the most about my job is the variety. If a project is slipping or we just don’t have the resources for something important, I’m the person who can step in and do what it takes to make sure the work of my collaborators adds up to something successful.&lt;/p>
&lt;h2 id="how-does-your-linguistics-training-help-you-in-your-job">How does your linguistics training help you in your job?&lt;/h2>
&lt;p>My training in linguistics absolutely helps me.&lt;/p>
&lt;p>First, and most importantly I believe, my background in sociolinguistics has taught me the significance of diversity among groups of people (like users of a product) in so many ways. For example, Stack Overflow sees many millions of users every month, but we know that not everyone is equally likely to participate on the site. There are huge, intimidating barriers to participation which disproportionately impact different groups of people depending on things like their background and experience coding. So every day I think about how changes to the product will affect different types of users. Me and my team are constantly striving to better understand the important ways our users vary in their backgrounds, motivations, and pain points and how we can better meet their needs. Especially in a globally diverse online community like ours where users interact and community with each other it’s extremely important for me and my colleagues to think about always.&lt;/p>
&lt;p>Second, and more concretely, the quantitative methods and experimental best practices I acquired while studying linguistics are highly applicable to my day-to-day job. We make use of a lot of different qualitative and quantitative research methods at Stack Overflow and having training in this area allows me to leverage these resources effectively in my product decision-making. Before I joined Stack Overflow, I had also spent some time as a data scientist, so my background in statistics and R was extremely relevant there. Without this training, I don’t think I would be where I am today.&lt;/p>
&lt;h2 id="do-you-have-any-advice-do-you-wish-someone-had-given-to-you-about-linguisticscareersuniversity">Do you have any advice do you wish someone had given to you about linguistics/careers/university?&lt;/h2>
&lt;p>Overall, I’m very happy with my trajectory. I’m extremely grateful to everyone who supported me at every stage and I would not be where I am today without all of these experience (yes including dropping out of a PhD!). That said, some thing that I wish I had encountered sooner are:&lt;/p>
&lt;ul>
&lt;li>Seriously, build a public portfolio. Make your work visible. Curate an online presence. Having even a just a modest &lt;a href="https://twitter.com/MeganRisdal">Twitter following&lt;/a> and some publicly discoverable content with my name on it has helped me immeasurably in my career. Oh, and learn git.&lt;/li>
&lt;li>Pay &lt;em>some&lt;/em> attention to what’s going on outside of your academic bubble. I fully intended to stay in academia when I started my PhD at UCLA. Had I thought somewhat ahead of time about the possibility that I would end up industry, I may have prioritized different classes or perhaps even chosen a different PhD program altogether. For example, if you have a choice between learning OCaml and Python, maybe see what non-academia has to say, too, as an input to your decision. Then again, hindsight is 2020. I would have seriously regretted not taking statistics/research methods under any circumstances, though.&lt;/li>
&lt;/ul>
&lt;h2 id="any-other-thoughts-or-comments">Any other thoughts or comments?&lt;/h2>
&lt;p>I think every tech company should look to hire people trained in linguistics. There are so, so many ways in which a background in linguistics is relevant to so many careers in tech. From user research to data science to (apparently) product management, a background in linguistics adds a unique and valuable perspective. If you’re not sure what you’re qualified for, carefully tailor your experience, cast your net wide, and seek out advice!&lt;/p>
&lt;p>&lt;em>Read more interviews on &lt;a href="https://www.superlinguo.com/">Superlinguo&lt;/a>!&lt;/em>&lt;/p>
&lt;p>&amp;ndash;&lt;/p>
&lt;h2 id="reply">Reply&lt;/h2>
&lt;p>Follow the conversation and discuss on Twitter.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">My Interview with &lt;a href="https://twitter.com/superlinguo?ref_src=twsrc%5Etfw">@superlinguo&lt;/a>: Linguists in Careers &lt;a href="https://twitter.com/hashtag/crosspost?src=hash&amp;amp;ref_src=twsrc%5Etfw">#crosspost&lt;/a> | &lt;a href="https://t.co/BVO9nK3v84">https://t.co/BVO9nK3v84&lt;/a>&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1202825630632439809?ref_src=twsrc%5Etfw">December 6, 2019&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script></description></item><item><title>How to Know Nothing</title><link>https://www.meg.dev/posts/how-to-know-nothing/</link><pubDate>Sun, 12 May 2019 17:00:27 -0400</pubDate><author>hello@meg.dev (Meg Risdal)</author><guid>https://www.meg.dev/posts/how-to-know-nothing/</guid><description>&lt;p>A couple of months ago I started a new job as a product manager at Stack Overflow. This blog post is about how to know nothing in a new job. It&amp;rsquo;s about that whiplash-like experience of going from confidently knowing everything there is to know about your work to coming to a grinding to halt so you can start all over again from scratch.&lt;/p>
&lt;img src="https://frinkiac.com/video/S09E19/TZFO4rsFaIkVsYcDt05xmH3LkhE=.gif">
&lt;p>Okay, maybe it&amp;rsquo;s not so dramatic as that, but the insecure feelings I was having inspired me to ask for advice from my Twitter followers:&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">Going from knowing everything and a half at one job to starting fresh is rough. Anyone have any tips for feeling better about it?&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1120880418562002945?ref_src=twsrc%5Etfw">April 24, 2019&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;p>To give some more background, I was feeling especially daunted by my own lack of knowledge for a couple of reasons, I think:&lt;/p>
&lt;p>First, at &lt;a href="https://www.kaggle.com/mrisdal">Kaggle&lt;/a> (my previous job) I worked through a really exciting high growth period. When I started in 2016, they were focused mainly on competitions and towards the end of my time there we had massively expanded the community, the product, and the team. We even lived through a successful acquisition by Google. I was present as a participant, either as a &amp;ldquo;witness&amp;rdquo; or &amp;ldquo;creator&amp;rdquo;, in all of this change. I felt that I could competently answer just about any question someone (internal or external) could ask me about Kaggle.&lt;/p>
&lt;p>Second, the company I&amp;rsquo;ve joined (&lt;a href="https://stackoverflow.com/users/8157789/megan-risdal?tab=profile">Stack Overflow&lt;/a>) is quite a bit like Kaggle in that it has a large, technical userbase with a rich history of cultural norms and past product decisions. That rich history has made Stack Overflow the household brand it is today, but it can feel intimidating as someone who wasn&amp;rsquo;t an active participant in it over the years. It&amp;rsquo;s a lot of tribal knowledge to catch up on!&lt;/p>
&lt;p>Anyway, for this blog post I wanted to summarize some of the great advice I got from folks on Twitter.&lt;/p>
&lt;h2 id="1-its-normal-and-okay-to-feel-insecure">1. It&amp;rsquo;s normal and okay to feel insecure&lt;/h2>
&lt;p>This is worth mentioning up front! I got a number of replies from people either expressing solidarity or assuring me it&amp;rsquo;s a normal feeling for anyone starting a new job.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">Any time one starts a new job, it is completely normal to feel overwhelmed and insecure about your knowledge. Remember, starting out fresh is overwhelming for anyone. It&amp;#39;s completely normal for people to take 60-90 days to get up to speed.&lt;br>&lt;br>Just remember you are kickass!&lt;/p>&amp;mdash; JSON Baumgartner (@jasonbaumgartne) &lt;a href="https://twitter.com/jasonbaumgartne/status/1121099345535864842?ref_src=twsrc%5Etfw">April 24, 2019&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;h2 id="2-remind-yourself-you-were-competent-and-you-will-be-again">2. Remind yourself you were competent and you will be again&lt;/h2>
&lt;p>This is for those of us that laugh at the idea of ever succumbing to the &lt;a href="https://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect">Dunning–Kruger effect&lt;/a> when it comes to evaluating our own competence. I&amp;rsquo;ll admit that I requested my personnel file when leaving Google so I have my performance reviews to remind me that I &lt;em>can&lt;/em> kick ass at my job in some objective-ish sense.&lt;/p>
&lt;p>I like this reply from someone else who recently changed teams:&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">I mean j still feel hella dumb.. but I know I feel dumb because I&amp;#39;m learning new things. Which helps me realize I&amp;#39;m not really dumb. It&amp;#39;s just how I feel.&lt;/p>&amp;mdash; Fred v3.0.0 🤖🎸 (@ProbNotABot) &lt;a href="https://twitter.com/ProbNotABot/status/1121188776250888192?ref_src=twsrc%5Etfw">April 24, 2019&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;h2 id="3-lean-into-your-newbie-perspective-as-superpower">3. Lean into your newbie perspective as superpower&lt;/h2>
&lt;p>This was probably my favorite reply (from a former colleague at Google):&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">It helps when people remind me that being new to a company/role/tech area is a super power. You have fresh eyes, new perspectives, ideas for connections not yet made.&lt;br>&lt;br>Keep wearing those newbie cuffs of power as long as you can!&lt;/p>&amp;mdash; Madame Secretary commandasaurus 🦖 (@amcasari) &lt;a href="https://twitter.com/amcasari/status/1120881183552757760?ref_src=twsrc%5Etfw">April 24, 2019&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;p>It was also stated nicely by another person who &lt;a href="https://twitter.com/ztuylime/status/1121132899166605312">replied with this quote&lt;/a>:&lt;/p>
&lt;blockquote>
&lt;p>In the beginner&amp;rsquo;s mind there are many possibilities,
but in the expert&amp;rsquo;s there are few
&lt;a href="https://www.dailyzen.com/journal/zen-mind-beginners-mind">&lt;em>Shunryu Suzuki&lt;/em>&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;p>Because I know I have a lot to learn in my new role, I&amp;rsquo;ve had an amazing opportunity to ask &amp;ldquo;Why?&amp;rdquo; so many times. I&amp;rsquo;m definitely going to keep wearing this hat for as long as I can as I talk to both coworkers &lt;a href="https://twitter.com/MeganRisdal/status/1127006719492509701?s=20">as well as users&lt;/a>.&lt;/p>
&lt;p>&lt;a href="https://twitter.com/aCraigPfeifer/status/1121089455538999297">As someone else replied&lt;/a>, by challenging assumptions you&amp;rsquo;re &amp;ldquo;both learning about the environment and moving it forward.&amp;rdquo;&lt;/p>
&lt;h2 id="4-be-vulnerable">4. Be vulnerable&lt;/h2>
&lt;p>People can only help you if they know what you&amp;rsquo;re struggling with or how you want to improve. Maybe it wasn&amp;rsquo;t comfortable for me to tweet the world about not knowing everything, but it got me some amazing replies that can hopefully help even more people than just myself. Plus, &lt;a href="https://twitter.com/richwag/status/1120907365157625856">as someone replied&lt;/a>, &amp;ldquo;If you don&amp;rsquo;t feel uncomfortable you&amp;rsquo;re not learning.&amp;rdquo;&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">I dunno, I&amp;#39;ve really struggled to have this kind of vulnerability in my new gig and I think I&amp;#39;ve come off as a know-it-all asshole at times. I think you&amp;#39;re winning 😁&lt;/p>&amp;mdash; Justin Kiggins (@neuromusic) &lt;a href="https://twitter.com/neuromusic/status/1120915698350321664?ref_src=twsrc%5Etfw">April 24, 2019&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;p>This also ties in well with &lt;a href="https://twitter.com/tinkertim/status/1120887904287494145">some other advice I got&lt;/a> to request feedback early and often as a newcomer to a team.&lt;/p>
&lt;p>&amp;hellip;&lt;/p>
&lt;p>I&amp;rsquo;ve distilled the advice I got into the several different themes I wrote about above, but at the end of the day my two biggest takeaways are:&lt;/p>
&lt;ol>
&lt;li>Be patient with yourself&lt;/li>
&lt;li>Be inquisitive&lt;/li>
&lt;/ol>
&lt;p>And eventually you &lt;em>will&lt;/em> know something again.&lt;/p>
&lt;p>&amp;ndash;&lt;/p>
&lt;h2 id="reply">Reply&lt;/h2>
&lt;p>Follow the conversation and discuss on Twitter.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">How to know nothing &lt;a href="https://t.co/awlln2Y3b7">https://t.co/awlln2Y3b7&lt;/a>&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1127699988551626752?ref_src=twsrc%5Etfw">May 12, 2019&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script></description></item><item><title>Product Management as an Episode of Black Mirror</title><link>https://www.meg.dev/posts/product-management-as-an-episode-of-black-mirror/</link><pubDate>Tue, 09 Apr 2019 01:43:59 -0400</pubDate><author>hello@meg.dev (Meg Risdal)</author><guid>https://www.meg.dev/posts/product-management-as-an-episode-of-black-mirror/</guid><description>&lt;p>Being a product manager on a small remote, distributed team reminds me a lot of the Black Mirror episode, &lt;a href="https://en.wikipedia.org/wiki/Be_Right_Back">&lt;em>Be Right Back&lt;/em>&lt;/a>.&lt;/p>
&lt;p>In this episode of the sci-fi anthology series, a woman uses an AI service to bring back her recently deceased partner. She does so by uploading all of their text messages, emails, voicemails, and any other computer-mediated conversation she shared with him to the, uhh, Cloud I suppose. That&amp;rsquo;s one use case for GDPR data requests! All of this data was then used to train a super language model to embody (literally) a clone of her prematurely departed husband.&lt;/p>
&lt;p>So, what does this have to do with being a product manager on a remote, distributed team? The sheer volume of written text I produce, of course! So much you could nearly hope to train a clone of me someday, language model and all.&lt;/p>
&lt;img src="https://source.unsplash.com/eOSqRq2Qm1c/800x450">
&lt;figcaption>_Photo by David Clode on Unsplash_&lt;/figcaption>
&lt;p>On remote, distributed teams, asynchronous, high quality communication is essential. Now, I &lt;em>only&lt;/em> have experience working on remote, distributed teams (so nothing to compare it to), but hopefully this becomes more of the norm. And in any case I think there are a lot of great reasons to write and write a LOT as a product manager. And ideally, you write in a way that faithfully transfers your product thinking, insights, and vision faithfully to Google Docs text and formatting.&lt;/p>
&lt;p>Here are a few reasons why I think Black Mirror worthy documentation should be a best practice regardless of whether you&amp;rsquo;re colocated and shoulder-to-shoulder or if multiple timezones separate you and your closest collaborators:&lt;/p>
&lt;ul>
&lt;li>A no-brainer (maybe literally if this catches on): Clearly written specs should enable my coworkers to focus on building uninterrupted as much as possible.&lt;/li>
&lt;li>&amp;ldquo;Propaganda!&amp;rdquo; Framing my artifacts up-front with context which is an opportunity to weave a consistent thread in the story I want to weave for our product&amp;rsquo;s direction. It then becomes a story I can trust my team to internalize.&lt;/li>
&lt;li>It&amp;rsquo;s like designing a redundant system&amp;hellip; if I make myself partly redundant through documentation, I might be able to afford to spend some of my time on a bit of extra higher level strategy and planning here and there. ;)&lt;/li>
&lt;/ul>
&lt;p>So there you go, that&amp;rsquo;s why being a product manager at a remote, distributed company is like being in an episode of Black Mirror (except in a good way!).&lt;/p>
&lt;p>&amp;ndash;&lt;/p>
&lt;h2 id="reply">Reply&lt;/h2>
&lt;p>Follow the conversation and discuss on Twitter.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">Product management as an episode of Black Mirror &lt;a href="https://t.co/SSvu9lgbUV">https://t.co/SSvu9lgbUV&lt;/a>&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1115500289891557377?ref_src=twsrc%5Etfw">April 9, 2019&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script></description></item><item><title>How to Amass Engineering Knowledge as a Product Manager</title><link>https://www.meg.dev/posts/amassing-swe-knowledge-as-a-pm/</link><pubDate>Tue, 19 Feb 2019 23:50:25 -0500</pubDate><author>hello@meg.dev (Meg Risdal)</author><guid>https://www.meg.dev/posts/amassing-swe-knowledge-as-a-pm/</guid><description>&lt;p>For about the past two years, I&amp;rsquo;ve been a product manager at Kaggle where I work on our public data platform as well as (more recently) our Google Cloud Platform integrations team. Lately I&amp;rsquo;ve had the opportunity to do quite a bit of reflection on my career thanks in part to having a mentee (being a mentor is awesome!). The other day she asked me how I &amp;ldquo;amassed as much engineering knowledge as I have&amp;rdquo;. (She asks great questions!) I shared &lt;a href="https://twitter.com/MeganRisdal/status/1096583566190731264?s=20">my answer on Twitter&lt;/a> and, you know what, I want to blog more so I&amp;rsquo;m sharing it here, too.&lt;/p>
&lt;p>Anyway, I had to spend a few days thinking about how to respond in a sage, mentor-ly way because it hasn&amp;rsquo;t been something I was necessarily intentional about (my interest in software development is more of a curiosity, probably). At the same time, I definitely had a couple of motivators for accumulating engineering knowledge.&lt;/p>
&lt;ol>
&lt;li>Product managers spend their days influencing without authority. Understanding and sympathizing with your engineering coworkers can help with this.&lt;/li>
&lt;li>Apart from the website about goldfish I made when I was 12, I don&amp;rsquo;t already have a background in computer science or software development. I could elaborate on why exactly I include this, but I&amp;rsquo;ll save that for another time.&lt;/li>
&lt;/ol>
&lt;p>After thinking about her question for a bit and jotting down my thoughts in my favorite note-taking app, Sublime Text, here&amp;rsquo;s what I came up with:&lt;/p>
&lt;h2 id="1-invest-time-to-learn-what-it-takes-to-describe-architecture-and-key-services-at-a-high-level">1. Invest time to learn what it takes to describe architecture and key services at a high level&lt;/h2>
&lt;p>This is a good idea for two reasons. First, this information should be readily accessible in some form&amp;ndash;take advantage of it! Just ask for the documentation for it or, if necessary, schedule a chat with the owner engineer. Second, this will be one of the highest leverage ways to successfully gauge feasibility of new features. This has saved me a number of times from needing to bother our tech leads.&lt;/p>
&lt;p>To give an example, when our tech lead was on paternity leave last Northern hemisphere fall, I took over managing our engineering team. Early on, we began experiencing a lot of instability with one of our services. I took the time then to review all of the available architecture and desgin docs (and even a 1hr recorded onboarding video!). From this I was able to draft a design doc proposing specific changes which were ultimately implemented (with a lot of input from my coworkers, of course!).&lt;/p>
&lt;h2 id="2-read-engineering-design-docs-for-fun-especially-requirements-and-alternatives-considered">2. Read engineering design docs for fun, especially requirements and alternatives considered&lt;/h2>
&lt;p>It&amp;rsquo;s fun, I promise! This is a lot like #2, but it&amp;rsquo;s more about understanding the process, context, and conversation that happens around engineering designs. Plus understanding what&amp;rsquo;s important and why to your coworkers is a great way to empathize with them. And of course, it can also ensure you&amp;rsquo;re up-to-date on things like database schema changes, new services, etc. that might help you answer questions or inspire product ideas in the future. It&amp;rsquo;s helped me in this way a number of times!&lt;/p>
&lt;h2 id="3-ask-swes-you-work-with-for-more-technical-details-than-you-may-actually-need">3. Ask SWEs you work with for more technical details than you may actually need&lt;/h2>
&lt;p>See, these are all so easy! Even if it&amp;rsquo;s out of pure curiosity that I ask for additional technical details, doing so is a great way to test my knowledge and show my coworkers I care about understanding the problems they&amp;rsquo;re solving. I&amp;rsquo;ve found that my developer coworkers are always more than happy to share.&lt;/p>
&lt;h2 id="4-have-and-sometimes-use-a-development-environment-like-your-coworkers">4. Have (and sometimes use!) a development environment like your coworkers'&lt;/h2>
&lt;p>Doing this might be relatively minor and is probably not necessary in all (or maybe most) cases, but it&amp;rsquo;s given me a lot of appreciation for how much our team invests in developer productivity and dev tooling. I like knowing how to make minor changes and deploy them. And my coworkers that helped me out liked seeing me contribute to our codebase and were super happy to help. I set up the server-side C# code that creates the CSVs we use for &lt;a href="https://www.kaggle.com/kaggle/meta-kaggle">Meta Kaggle&lt;/a>, Kaggle&amp;rsquo;s public dataset about &amp;hellip; Kaggle.&lt;/p>
&lt;p>&amp;hellip;&lt;/p>
&lt;p>And so there&amp;rsquo;s what I&amp;rsquo;ve come up with to answer my coworker&amp;rsquo;s question. I&amp;rsquo;m still learning, but these are nonetheless some things that have helped me do my job better (and enjoy it more). The common thread my pieces of advice share, I think, is that they exhibit care for my coworkers, the things they work on, and how they make decisions.&lt;/p>
&lt;p>My final piece of meta advice from here is to demonstrate that you&amp;rsquo;re listening and working on improving your engineering knowledge. The more you make product decisions with the things you learned through the help of your coworkers as input, the more people will come to trust you. And in turn, they&amp;rsquo;ll share more with you. It&amp;rsquo;s a really rewarding cycle.&lt;/p>
&lt;p>Be curious. Be empathetic.&lt;/p>
&lt;p>&amp;ndash;&lt;/p>
&lt;h2 id="reply">Reply&lt;/h2>
&lt;p>Follow the conversation and discuss on Twitter.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">How to amass SWE knowledge as a PM | &lt;a href="https://t.co/XpBjapQn3a">https://t.co/XpBjapQn3a&lt;/a>&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1098104382569078784?ref_src=twsrc%5Etfw">February 20, 2019&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script></description></item><item><title>New Hobbies</title><link>https://www.meg.dev/posts/new-hobbies/</link><pubDate>Sat, 06 Oct 2018 17:53:46 -0700</pubDate><author>hello@meg.dev (Meg Risdal)</author><guid>https://www.meg.dev/posts/new-hobbies/</guid><description>&lt;p>A couple of weeks ago I tweeted that I wanted to explore new hobbies. For the past couple of years, I&amp;rsquo;ve engrossed myself in a job I love. My career development has been really rewarding professionally, but lately I&amp;rsquo;ve felt personally underdeveloped. My current hobbies include seeing movies (especially horror and sci-fi) and exploring my new home of Los Angeles (biking, hiking, and of course eating). While these things are fun, I feel like I could be doing and &lt;em>creating&lt;/em> so much more.&lt;/p>
&lt;p>It seems like everyone I know is into some really awesome hobbies: kite surfing, beekeeping, knitting, curling, trapeze, etc. etc. And I used to do some cool things myself: play oboe, sing in a Georgian folk choir, mountain bike. But lately I&amp;rsquo;ve been filling my time with a lot of Netflix.&lt;/p>
&lt;p>So I decided to poll my cooler-than-me Twitter audience. What are some interesting hobby ideas I can try out on weekends?&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">I just had the idea to try one totally new hobby per week. Or maybe every other week... What are some cheap, cool weekend hobbies you like? 🎨🖌️🌱🎹📝&lt;br>&lt;br>(The plant emoji obviously means fairy gardening.)&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1041602406172123136?ref_src=twsrc%5Etfw">September 17, 2018&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;p>Ideas flooded in! In case you might be inspired to try something new yourself, here are all of the suggestions I received:&lt;/p>
&lt;ul>
&lt;li>Juggling&lt;/li>
&lt;li>Puzzles&lt;/li>
&lt;li>Voxel Art (&lt;a href="http://www.voxelmade.com/magicavoxel/">MagicaVoxel&lt;/a>)&lt;/li>
&lt;li>Kaggle Competitions&lt;/li>
&lt;li>🍰&lt;/li>
&lt;li>Birdwatching&lt;/li>
&lt;li>Sketching portraits&lt;/li>
&lt;li>Mod podge&lt;/li>
&lt;li>Skateboarding&lt;/li>
&lt;li>Cooking&lt;/li>
&lt;li>Manga/anime sketching&lt;/li>
&lt;li>Start a local food and travel blog&lt;/li>
&lt;li>Meet new people from different cultures&lt;/li>
&lt;li>Ukele&lt;/li>
&lt;li>Tango&lt;/li>
&lt;li>Martial arts&lt;/li>
&lt;li>Drawing painting&lt;/li>
&lt;li>Visit museums&lt;/li>
&lt;li>Coffee/ice cream/chocolate tasting&lt;/li>
&lt;li>Paper crafts&lt;/li>
&lt;li>Baking&lt;/li>
&lt;li>Wine tasting&lt;/li>
&lt;li>Learn to make 3D polyhedra&lt;/li>
&lt;li>Make notebooks&lt;/li>
&lt;li>Help local refugees&lt;/li>
&lt;li>Teach English&lt;/li>
&lt;/ul>
&lt;p>Naturally, I ignored ALL of these suggestions. For my first hobby, I&amp;rsquo;m not straying far from my comfort zone (I am still in my sweats at home, after all)&amp;ndash;I&amp;rsquo;m creating this new personal website. Now, there&amp;rsquo;s a reason why I&amp;rsquo;m spending my first hobby project this way, of course. With this blog, I&amp;rsquo;ll now have a place for me to document my &amp;ldquo;new hobby&amp;rdquo; hobbies.&lt;/p>
&lt;p>Anyway, so that&amp;rsquo;s it for the meta-post. I hope you&amp;rsquo;ll look forward to my next!&lt;/p>
&lt;p>&amp;ndash;&lt;/p>
&lt;h2 id="reply">Reply&lt;/h2>
&lt;p>Follow the conversation and discuss on Twitter.&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">New hobbies. &lt;a href="https://t.co/MFqPVrWitH">https://t.co/MFqPVrWitH&lt;/a>&lt;/p>&amp;mdash; meg.ehh 🇨🇦 (@MeganRisdal) &lt;a href="https://twitter.com/MeganRisdal/status/1048815470126686209?ref_src=twsrc%5Etfw">October 7, 2018&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script></description></item><item><title>Hello World</title><link>https://www.meg.dev/posts/hello-world/</link><pubDate>Sat, 06 Oct 2018 15:51:11 -0700</pubDate><author>hello@meg.dev (Meg Risdal)</author><guid>https://www.meg.dev/posts/hello-world/</guid><description>&lt;p>Hello world! I&amp;rsquo;m recreating my personal website using &lt;a href="https://gohugo.io/">Hugo&lt;/a>. Previously it was written in Bootstrap. I hope you enjoy the new look and layout.&lt;/p></description></item></channel></rss>