<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>Willing Consulting</title>
<link>https://decorator-proficiencies-75861.netlify.app/</link>
<atom:link href="https://decorator-proficiencies-75861.netlify.app/index.xml" rel="self" type="application/rss+xml"/>
<description>Human Centered Open Source Leadership
</description>
<generator>quarto-1.8.27</generator>
<lastBuildDate>Sun, 24 May 2026 00:00:00 GMT</lastBuildDate>
<item>
  <title>Reflections on PyCon US 2026 and AI Tools</title>
  <dc:creator>Carol Willing</dc:creator>
  <link>https://decorator-proficiencies-75861.netlify.app/blog/posts/2026-05-24_pycon_ai.html</link>
  <description><![CDATA[ 





<p>I’ve been reflecting about my PyCon experience.</p>
<p>I enjoyed moderating a panel in the PyCon AI track with Catherine Nelson, Jodie Burchell, PhD, Jelle Zijlstra, Maike Scherer, and Laís Carvalho about pragmatic workflows using AI tools.</p>
<p>I thought deeply about the messages in the keynotes. I valued the discussions at the Maintainer Summit organized by Mariatta Wijaya, Leah Wasser, Ph.D., and Inessa Pawson. I enjoyed working through Felipe Moreno’s zine mystery.</p>
<p>People are the heart of Python. They have created community and code to empower people around the world. Hope, as eloquently shared by Amanda Casari in her keynote, comes from working together for a greater good - the human condition and future generations.</p>
<p>We can change the current narrative.</p>
<p>P.S. If you have design expertise, please refine these ideas.</p>
<section id="from-vague-ai-to-tools-you-can-use" class="level2">
<h2 class="anchored" data-anchor-id="from-vague-ai-to-tools-you-can-use">From vague “AI” to tools you can use</h2>
<p><a href="../../static/images/2026/ai_framing_three_panel.webp" class="lightbox" data-gallery="quarto-lightbox-gallery-1"><img src="https://decorator-proficiencies-75861.netlify.app/static/images/2026/ai_framing_three_panel.webp" class="img-fluid"></a></p>


</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a> ]]></description>
  <category>tech</category>
  <category>napari</category>
  <category>python</category>
  <category>visualization</category>
  <category>GPU</category>
  <category>remote</category>
  <guid>https://decorator-proficiencies-75861.netlify.app/blog/posts/2026-05-24_pycon_ai.html</guid>
  <pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate>
  <media:content url="https://decorator-proficiencies-75861.netlify.app/static/images/2026/ai_framing_three_panel.webp" medium="image" type="image/webp"/>
</item>
<item>
  <title>Experimenting with napari and a remote GPU vm</title>
  <dc:creator>Carol Willing</dc:creator>
  <link>https://decorator-proficiencies-75861.netlify.app/blog/posts/2025-05-29_napari_remote_gpu.html</link>
  <description><![CDATA[ 





<p>I’ve been looking for an inexpensive way to run and experiment with napari on a remote GPU vm.</p>
<p>I’m still experimenting with different approaches to see what works best. I’ll add more posts as I learn more.</p>
<p>In this post, I’ll document the steps that I took to set up a remote DigitalOcean GPU droplet running Ubuntu with xfce4 for a lightweight GUI and tightvncserver using an SSH tunnel to connect to it. This setup allows me to run napari, interact with it, and run the built-in napari examples with reasonable performance.</p>
<p>⚠️ <strong>Use at your own risk. This is not a production setup and is intended for experimentation purposes only.</strong></p>
<p>💰 <strong>Costs: I destroy the droplet after each session to avoid incurring costs when the droplet is not in use.</strong></p>
<section id="components" class="level2">
<h2 class="anchored" data-anchor-id="components">Components</h2>
<ul>
<li>DigitalOcean GPU droplet: I chose the smallest GPU droplet available.</li>
<li>MacBook Air M2 2022 with 16GB RAM as the local client machine</li>
<li>TightVNC server: A lightweight VNC server for Linux</li>
<li>TigerVNC viewer: A lightweight VNC viewer for macOS</li>
<li>SSH tunnel: To securely connect to the VNC server over SSH</li>
</ul>
</section>
<section id="set-up-the-remote-server" class="level2">
<h2 class="anchored" data-anchor-id="set-up-the-remote-server">Set up the remote server</h2>
<p>There were several processes that I used to set up the GPU droplet as the remote server.</p>
<section id="get-gpu-access" class="level3">
<h3 class="anchored" data-anchor-id="get-gpu-access">1. Get GPU Access</h3>
<p>I needed to request access from Digital Ocean to create the GPU droplet. I did this by submitting a support ticket to DigitalOcean. They approved my request, and I was able to create a GPU droplet.</p>
</section>
<section id="create-the-gpu-droplet" class="level3">
<h3 class="anchored" data-anchor-id="create-the-gpu-droplet">2. Create the GPU Droplet</h3>
<p>After receiving access, I created a new GPU droplet using the DigitalOcean control panel. I selected the smallest GPU droplet available <code>ubuntu-gpu-4000adax1-20gb-tor1</code>:</p>
<ul>
<li>Region: Toronto 1</li>
<li>GPU: NVIDIA RTX4000 ADA</li>
<li>Size: 1 GPU - 20 GB VRAM - 8 vCPU - 32 GB RAM - 500 GB Boot Disk</li>
</ul>
<p><em>Insert image here</em></p>
<p>I also set up SSH access by using my SSH key during the droplet creation process. This allows me to connect to the droplet securely without needing a password.</p>
<p>Take note of the IP address of the droplet, as you’ll need it to connect later.</p>
</section>
<section id="connect-to-the-droplet" class="level3">
<h3 class="anchored" data-anchor-id="connect-to-the-droplet">3. Connect to the Droplet</h3>
<p>I connected to the droplet using SSH from my local machine:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode bash code-with-copy"><code class="sourceCode bash"><span id="cb1-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">ssh</span> root@<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&lt;</span>droplet-ip-address<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span></span></code></pre></div></div>
</section>
<section id="setup-the-server-user-and-firewall" class="level3">
<h3 class="anchored" data-anchor-id="setup-the-server-user-and-firewall">4. Setup the server user and firewall</h3>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode bash code-with-copy"><code class="sourceCode bash"><span id="cb2-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># set up a new user</span></span>
<span id="cb2-2"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">usermod</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-aG</span> sudo sammy</span>
<span id="cb2-3"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># configure the firewall</span></span>
<span id="cb2-4"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">ufw</span> app list</span>
<span id="cb2-5"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">ufw</span> allow OpenSSH</span>
<span id="cb2-6"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">ufw</span> enable</span>
<span id="cb2-7"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">ufw</span> status</span>
<span id="cb2-8"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># copy SSH key to from root to the new user</span></span>
<span id="cb2-9"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rsync</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">--archive</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">--chown</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>sammy:sammy ~/.ssh /home/sammy</span></code></pre></div></div>
<p>Test the SSH connection with the new user:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode bash code-with-copy"><code class="sourceCode bash"><span id="cb3-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">ssh</span> sammy@<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&lt;</span>droplet-ip-address<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span></span></code></pre></div></div>
</section>
<section id="install-xfce4-and-tightvnc-server" class="level3">
<h3 class="anchored" data-anchor-id="install-xfce4-and-tightvnc-server">5. Install xfce4 and TightVNC server</h3>
<p>From the <strong>user account</strong>, I installed and configured the lightweight desktop environment (xfce4) and the VNC server (tightvncserver):</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode bash code-with-copy"><code class="sourceCode bash"><span id="cb4-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Install packages</span></span>
<span id="cb4-2"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sudo</span> apt update</span>
<span id="cb4-3"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sudo</span> apt install xfce4 xfce4-goodies</span>
<span id="cb4-4"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sudo</span> apt install tightvncserver</span>
<span id="cb4-5"></span>
<span id="cb4-6"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Start the VNC server to create the initial configuration files</span></span>
<span id="cb4-7"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">vncserver</span></span>
<span id="cb4-8"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Stop the vnc server before changing the configuration</span></span>
<span id="cb4-9"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">vncserver</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-kill</span> :1</span>
<span id="cb4-10"></span>
<span id="cb4-11"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Back up the default xstartup file</span></span>
<span id="cb4-12"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mv</span> ~/.vnc/xstartup ~/.vnc/xstartup.bak</span>
<span id="cb4-13"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Create a new xstartup file</span></span>
<span id="cb4-14"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">nano</span> ~/.vnc/xstartup</span></code></pre></div></div>
<p>Add the following content to the <code>xstartup</code> file:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode bash code-with-copy"><code class="sourceCode bash"><span id="cb5-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">#!/bin/bash</span></span>
<span id="cb5-2"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">xrdb</span> <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$HOME</span>/.Xresources</span>
<span id="cb5-3"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">startxfce4</span> <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">&amp;</span></span></code></pre></div></div>
<p>Save and exit the file.</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb6" style="background: #f1f3f5;"><pre class="sourceCode bash code-with-copy"><code class="sourceCode bash"><span id="cb6-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Make the xstartup file executable</span></span>
<span id="cb6-2"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">chmod</span> +x ~/.vnc/xstartup</span>
<span id="cb6-3"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Start the VNC server</span></span>
<span id="cb6-4"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">vncserver</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-localhost</span></span>
<span id="cb6-5"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">startx</span> xfce</span>
<span id="cb6-6"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">startx</span></span></code></pre></div></div>
</section>
</section>
<section id="set-up-the-client-machine" class="level2">
<h2 class="anchored" data-anchor-id="set-up-the-client-machine">Set up the client machine</h2>
<section id="install-the-tigervnc-viewer" class="level3">
<h3 class="anchored" data-anchor-id="install-the-tigervnc-viewer">1. Install the TigerVNC Viewer</h3>
<p>On my MacBook Air, I installed the <a href="https://tigervnc.org/">TigerVNC</a> viewer to connect to the VNC server running on the remote GPU droplet.</p>
<p>Install the TigerVNC viewer by:</p>
<ul>
<li>Visit https://tigervnc.org/</li>
<li>Visit https://github.com/TigerVNC/tigervnc/releases to find the binary for macOS</li>
<li>At the time of writing, visit the following SourceForge URL: https://sourceforge.net/projects/tigervnc/files/stable/1.15.0/</li>
<li>Download the <code>TigerVNC-1.15.0.dmg</code> file.</li>
<li>Open the downloaded file and drag the TigerVNC Viewer app to your Applications folder.</li>
</ul>
</section>
<section id="set-up-the-ssh-tunnel" class="level3">
<h3 class="anchored" data-anchor-id="set-up-the-ssh-tunnel">2. Set up the SSH Tunnel</h3>
<p>To securely connect to the VNC server over SSH, I set up an SSH tunnel from my local machine to the remote GPU droplet. This allows me to forward the VNC traffic through the SSH connection.</p>
<p>Open a terminal on your MacBook Air and run the following command:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb7" style="background: #f1f3f5;"><pre class="sourceCode bash code-with-copy"><code class="sourceCode bash"><span id="cb7-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">ssh</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-L</span> 59000:localhost:5901 <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-C</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-N</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-l</span> sammy <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&lt;</span>droplet-ip-address<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span></span></code></pre></div></div>
</section>
<section id="run-the-tigervnc-viewer" class="level3">
<h3 class="anchored" data-anchor-id="run-the-tigervnc-viewer">3. Run the TigerVNC Viewer</h3>
<p>To run the TigerVNC viewer, double-click the TigerVNC Viewer app in your Applications folder. It opens a window where you will enter the connection location and press “Connect”.</p>
<blockquote class="blockquote">
<p>Insert image here</p>
</blockquote>
</section>
<section id="use-the-tigervnc-terminal" class="level3">
<h3 class="anchored" data-anchor-id="use-the-tigervnc-terminal">4. Use the TigerVNC terminal</h3>
<p>If everything is set up correctly, you should see the remote desktop. You can now interact with the remote desktop by opening a terminal in the GUI.</p>
<blockquote class="blockquote">
<p>Insert image here</p>
</blockquote>
</section>
</section>
<section id="run-napari" class="level2">
<h2 class="anchored" data-anchor-id="run-napari">Run napari</h2>
<ol type="1">
<li><p>Open a terminal in the remote desktop environment.</p></li>
<li><p>Install uv:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb8" style="background: #f1f3f5;"><pre class="sourceCode bash code-with-copy"><code class="sourceCode bash"><span id="cb8-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">curl</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-LsSf</span> https://astral.sh/uv/install.sh <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">|</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sh</span></span></code></pre></div></div></li>
<li><p>Create a uv virtual environment:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb9" style="background: #f1f3f5;"><pre class="sourceCode bash code-with-copy"><code class="sourceCode bash"><span id="cb9-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mkdir</span> napari-playground</span>
<span id="cb9-2"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">cd</span> napari-playground</span>
<span id="cb9-3"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">uv</span> venv</span></code></pre></div></div></li>
<li><p>Activate the virtual environment and install napari:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb10" style="background: #f1f3f5;"><pre class="sourceCode bash code-with-copy"><code class="sourceCode bash"><span id="cb10-1"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">source</span> .venv/bin/activate</span>
<span id="cb10-2"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">uv</span> install napari<span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">[</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">all</span><span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">]</span></span>
<span id="cb10-3"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Install pyqt5 from apt to avoid an error with a missing Qt platform plugin</span></span>
<span id="cb10-4"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sudo</span> apt-get install python3-pyqt5</span></code></pre></div></div></li>
<li><p>Run napari:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb11" style="background: #f1f3f5;"><pre class="sourceCode bash code-with-copy"><code class="sourceCode bash"><span id="cb11-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">uv</span> run napari</span></code></pre></div></div></li>
</ol>
</section>
<section id="play-with-napari-and-examples" class="level2">
<h2 class="anchored" data-anchor-id="play-with-napari-and-examples">Play with napari and examples</h2>
<blockquote class="blockquote">
<p>TODO</p>
</blockquote>
</section>
<section id="destroy-the-droplet" class="level2">
<h2 class="anchored" data-anchor-id="destroy-the-droplet">Destroy the droplet</h2>
<p>After finishing my session, I destroyed the droplet to avoid incurring costs when it is not in use. You can do this from the DigitalOcean control panel by selecting the droplet and clicking on “Destroy”.</p>
</section>
<section id="attribution" class="level2">
<h2 class="anchored" data-anchor-id="attribution">Attribution</h2>
<p>Much of the information in this post is adapted from the following resources:</p>
<ul>
<li>https://bobcares.com/blog/digitalocean-vnc-ubuntu/</li>
<li>https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-20-04</li>
</ul>
</section>
<section id="conclusions" class="level2">
<h2 class="anchored" data-anchor-id="conclusions">Conclusions</h2>
<p>Automating this setup process would be a good next step. Using something like Ansible, Terraform, or shell scripts would make it easier to spin up the server with minimal typing.</p>
<p>Overall, I’m happy with the performance of napari to use the examples and begin interacting with napari for its development and testing purposes.</p>
<p>In the future, I’m hoping to use <a href="https://www.nvidia.com/en-us/products/workstations/dgx-spark/">NVidia DGX Spark</a>, which was announced earlier this year, to do GPU computing without a cloud instance. Looking forward to trying it out when it becomes available.</p>
<p>Until then, I’ve found the DigitalOcean GPU droplet to be a cost-effective option for experimenting with napari on a remote GPU vm.</p>


</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a> ]]></description>
  <category>tech</category>
  <category>napari</category>
  <category>python</category>
  <category>visualization</category>
  <category>GPU</category>
  <category>remote</category>
  <guid>https://decorator-proficiencies-75861.netlify.app/blog/posts/2025-05-29_napari_remote_gpu.html</guid>
  <pubDate>Thu, 29 May 2025 00:00:00 GMT</pubDate>
  <media:content url="https://decorator-proficiencies-75861.netlify.app/static/images/2024/2024-napari-container.webp" medium="image" type="image/webp"/>
</item>
<item>
  <title>Setting up napari using containers - Part 1</title>
  <dc:creator>Carol Willing</dc:creator>
  <link>https://decorator-proficiencies-75861.netlify.app/blog/posts/2024-11-19-napari-container.html</link>
  <description><![CDATA[ 





<section id="getting-container-images" class="level2">
<h2 class="anchored" data-anchor-id="getting-container-images">Getting container images</h2>
<p>The napari container images are available from the <a href="https://github.com/napari/napari/pkgs/container/napari">GitHub Container Registry</a>.</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="../../static/images/2024/2024-napari-container.webp" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="napari container images"><img src="https://decorator-proficiencies-75861.netlify.app/static/images/2024/2024-napari-container.webp" class="img-fluid figure-img" alt="napari container images"></a></p>
<figcaption>napari container images</figcaption>
</figure>
</div>
<p>There are two types of container images available:</p>
<ul>
<li>napari</li>
<li>napari-xpra</li>
</ul>
<p>Since I’m running a Mac M2, I’m going to use the <code>napari-xpra</code> container image since it doesn’t require an X server and hopefully will be less finicky.</p>
</section>
<section id="lets-run-napari" class="level2">
<h2 class="anchored" data-anchor-id="lets-run-napari">Let’s run napari</h2>
<p>I’m going to use the <a href="https://napari.org/dev/howtos/docker.html#napari-in-docker">napari documentation instructions</a> as a guide and I ran these specific steps:</p>
<ol type="1">
<li><p>Make sure docker is installed and running on your system.</p>
<pre class="shell"><code>docker --version</code></pre></li>
<li><p>From the root of your napari repo clone or fork, run (note: this could take a while even 5 minutes):</p>
<pre class="shell"><code>docker build --target napari -t ghcr.io/napari/napari-xpra:latest .</code></pre>
<div class="callout callout-style-simple callout-tip callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Tip</span>Supply chain check
</div>
</div>
<div class="callout-body-container callout-body">
<p>You can do a quick scan of the image after pulling it using <code>docker scout</code>. If you are logged into your Docker account, it will make sure that you have the latest version of Docker Scout.</p>
<p><a href="../../static/images/2024/2024-11-19-docker-scout.webp" class="lightbox" data-gallery="quarto-lightbox-gallery-2"><img src="https://decorator-proficiencies-75861.netlify.app/static/images/2024/2024-11-19-docker-scout.webp" class="img-fluid"></a></p>
</div>
</div></li>
<li><p>Run the container:</p>
<pre class="shell"><code>docker run -it --rm -p 9876:9876 ghcr.io/napari/napari-xpra</code></pre></li>
<li><p>Open a browser and go to <code>http://localhost:9876</code> to see the napari GUI. You should see the napari GUI in your browser.</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="../../static/images/2024/2024-11-19-safari-gui.webp" class="lightbox" data-gallery="quarto-lightbox-gallery-3" title="Safari browser"><img src="https://decorator-proficiencies-75861.netlify.app/static/images/2024/2024-11-19-safari-gui.webp" class="img-fluid figure-img" alt="Safari browser"></a></p>
<figcaption>Safari browser</figcaption>
</figure>
</div>
<div class="callout callout-style-simple callout-warning callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Warning</span>Check the interactivity of the GUI
</div>
</div>
<div class="callout-body-container callout-body">
<p>Unfortunately, using this in Safari was popping up a paste dialog instead of allowing me to interact with the GUI.</p>
</div>
</div>
<p>I was able to connect to the container using Chrome. It brought up an xpra screen. I didn’t add any information to the form and clicked “Connect”. It then brought up the napari GUI.</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="../../static/images/2024/2024-11-19-chrome-gui.webp" class="lightbox" data-gallery="quarto-lightbox-gallery-4" title="Chrome browser"><img src="https://decorator-proficiencies-75861.netlify.app/static/images/2024/2024-11-19-chrome-gui.webp" class="img-fluid figure-img" alt="Chrome browser"></a></p>
<figcaption>Chrome browser</figcaption>
</figure>
</div></li>
</ol>
</section>
<section id="part-2---interacting-with-napari-in-the-browser" class="level2">
<h2 class="anchored" data-anchor-id="part-2---interacting-with-napari-in-the-browser">Part 2 - Interacting with napari in the browser</h2>
<p>In the next post, I’ll explore how to interact with napari in the browser. Stay tuned!</p>


</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a> ]]></description>
  <category>tech</category>
  <category>napari</category>
  <category>python</category>
  <category>visualization</category>
  <category>containers</category>
  <guid>https://decorator-proficiencies-75861.netlify.app/blog/posts/2024-11-19-napari-container.html</guid>
  <pubDate>Tue, 19 Nov 2024 00:00:00 GMT</pubDate>
  <media:content url="https://decorator-proficiencies-75861.netlify.app/static/images/2024/2024-napari-container.webp" medium="image" type="image/webp"/>
</item>
<item>
  <title>Setting up a napari development environment (M1 MacOS)</title>
  <dc:creator>Carol Willing</dc:creator>
  <link>https://decorator-proficiencies-75861.netlify.app/blog/posts/2024-11-11-napari-dev.html</link>
  <description><![CDATA[ 





<section id="getting-pyenv" class="level2">
<h2 class="anchored" data-anchor-id="getting-pyenv">Getting pyenv</h2>
<p>Set up pyenv on your M1 Mac.</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode zsh code-with-copy"><code class="sourceCode zsh"><span id="cb1-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">brew</span> install pyenv</span></code></pre></div></div>
<p>Add the following to your <code>.zshrc</code> file:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode zsh code-with-copy"><code class="sourceCode zsh"><span id="cb2-1"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">export</span> <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">PYENV_ROOT</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$HOME</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">/.pyenv"</span></span>
<span id="cb2-2"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">export</span> <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">PATH</span></span>
<span id="cb2-3"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">eval</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$(</span><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">pyenv</span> init <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">--path</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">)</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span></span></code></pre></div></div>
<p>Restart your terminal.</p>
<p>To test that pyenv is installed, run:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode zsh code-with-copy"><code class="sourceCode zsh"><span id="cb3-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">pyenv</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">--version</span></span></code></pre></div></div>
</section>
<section id="getting-miniforge3" class="level2">
<h2 class="anchored" data-anchor-id="getting-miniforge3">Getting miniforge3</h2>
<p>In this section, we will install miniforge3, a minimal installer for conda.</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode zsh code-with-copy"><code class="sourceCode zsh"><span id="cb4-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">pyenv</span> install miniforge3</span></code></pre></div></div>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode zsh code-with-copy"><code class="sourceCode zsh"><span id="cb5-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">pyenv</span> versions</span></code></pre></div></div>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb6" style="background: #f1f3f5;"><pre class="sourceCode zsh code-with-copy"><code class="sourceCode zsh"><span id="cb6-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">pyenv</span> local miniforge3</span></code></pre></div></div>
</section>
<section id="playing-with-conda" class="level2">
<h2 class="anchored" data-anchor-id="playing-with-conda">Playing with conda</h2>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb7" style="background: #f1f3f5;"><pre class="sourceCode zsh code-with-copy"><code class="sourceCode zsh"><span id="cb7-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">conda</span></span></code></pre></div></div>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb8" style="background: #f1f3f5;"><pre class="sourceCode zsh code-with-copy"><code class="sourceCode zsh"><span id="cb8-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">conda</span> list</span></code></pre></div></div>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb9" style="background: #f1f3f5;"><pre class="sourceCode zsh code-with-copy"><code class="sourceCode zsh"><span id="cb9-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">conda</span> init</span></code></pre></div></div>
</section>
<section id="create-a-conda-environment" class="level2">
<h2 class="anchored" data-anchor-id="create-a-conda-environment">Create a conda environment</h2>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb10" style="background: #f1f3f5;"><pre class="sourceCode zsh code-with-copy"><code class="sourceCode zsh"><span id="cb10-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">conda</span> create <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-y</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-n</span> napari-env <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-c</span> conda-forge python=3.9</span></code></pre></div></div>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb11" style="background: #f1f3f5;"><pre class="sourceCode zsh code-with-copy"><code class="sourceCode zsh"><span id="cb11-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">conda</span> activate napari-env</span></code></pre></div></div>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb12" style="background: #f1f3f5;"><pre class="sourceCode zsh code-with-copy"><code class="sourceCode zsh"><span id="cb12-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">python</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-m</span> pip install <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"napari[all]"</span></span></code></pre></div></div>
<div class="callout callout-style-simple callout-note">
<div class="callout-body d-flex">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-body-container">
<p>The quotes are needed for zsh shell.</p>
</div>
</div>
</div>
</section>
<section id="add-the-dev-tools" class="level2">
<h2 class="anchored" data-anchor-id="add-the-dev-tools">Add the dev tools</h2>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb13" style="background: #f1f3f5;"><pre class="sourceCode zsh code-with-copy"><code class="sourceCode zsh"><span id="cb13-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">pip</span> install <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-e</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">".[pyside,dev]"</span></span></code></pre></div></div>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb14" style="background: #f1f3f5;"><pre class="sourceCode zsh code-with-copy"><code class="sourceCode zsh"><span id="cb14-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">pip</span> install <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-e</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">".[dev]"</span></span></code></pre></div></div>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb15" style="background: #f1f3f5;"><pre class="sourceCode zsh code-with-copy"><code class="sourceCode zsh"><span id="cb15-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">pre-commit</span> install</span></code></pre></div></div>
</section>
<section id="add-the-testing-tools" class="level2">
<h2 class="anchored" data-anchor-id="add-the-testing-tools">Add the testing tools</h2>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb16" style="background: #f1f3f5;"><pre class="sourceCode zsh code-with-copy"><code class="sourceCode zsh"><span id="cb16-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">python</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-m</span> pip install <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-e</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">".[testing]"</span></span></code></pre></div></div>
</section>
<section id="run-the-tests" class="level2">
<h2 class="anchored" data-anchor-id="run-the-tests">Run the tests</h2>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb17" style="background: #f1f3f5;"><pre class="sourceCode zsh code-with-copy"><code class="sourceCode zsh"><span id="cb17-1"><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">CI</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>1 <span class="ex" style="color: null;
background-color: null;
font-style: inherit;">pytest</span></span></code></pre></div></div>
</section>
<section id="next-steps" class="level2">
<h2 class="anchored" data-anchor-id="next-steps">Next steps</h2>
<ol type="1">
<li>Run IPython and test napari.</li>
<li>Make a change to the code and run the tests.</li>
<li>Run an example script.</li>
</ol>


</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a> ]]></description>
  <category>tech</category>
  <category>napari</category>
  <category>python</category>
  <category>visualization</category>
  <guid>https://decorator-proficiencies-75861.netlify.app/blog/posts/2024-11-11-napari-dev.html</guid>
  <pubDate>Mon, 11 Nov 2024 00:00:00 GMT</pubDate>
  <media:content url="https://decorator-proficiencies-75861.netlify.app/static/images/2024/2024-11-napari.png" medium="image" type="image/png" height="84" width="144"/>
</item>
<item>
  <title>Thankful for PyLadies Conferences</title>
  <dc:creator>Carol Willing</dc:creator>
  <link>https://decorator-proficiencies-75861.netlify.app/blog/posts/2023-11-20-why-sponsor-pyladies.html</link>
  <description><![CDATA[ 





<p><a href="https://pyladies.com"><strong>PyLadies</strong></a> is a special organization that strives to give everyone the opportunity to learn and grow in Python. PyLadies’ mission includes empowering the current and next generation of Pythonistas through outreach and education.</p>
<section id="pyladies-at-pycon-sweden" class="level2">
<h2 class="anchored" data-anchor-id="pyladies-at-pycon-sweden">PyLadies at PyCon Sweden</h2>
<p>I just returned from PyCon Sweden, a conference organized by their local Python community. I was honored to be one of the keynote speakers. We had a PyLadies lunch, organized by the optimistic Anwesha Das and the PyLadies Stockholm group. I was impressed by the number of PyLadies at the lunch.</p>
<p>My favorite part of the lunch was listening to talented people from around the world share their stories. I was especially impressed by people who have changed careers to work with Python. I also enjoyed hearing about how Python is being used in libraries and education — two areas that have a multiplier effect for Python’s growth.</p>
</section>
<section id="whats-next" class="level2">
<h2 class="anchored" data-anchor-id="whats-next">What’s Next?</h2>
<p>What’s next for PyLadies? I’m excited to see PyLadies continue to grow and thrive in 2023. One look at the PyCon YouTube channels shows the breadth and depth of talent in the PyLadies community.</p>
</section>
<section id="pyladies-global-conference-pyladiescon" class="level2">
<h2 class="anchored" data-anchor-id="pyladies-global-conference-pyladiescon">PyLadies Global Conference (PyLadiesCon)</h2>
<p>Taking place on the first weekend of December, PyLadies will gather together at <a href="https://conference.pyladies.com">PyLadiesCon</a> for a weekend filled with insightful talks, engaging panels, and collaborative networking opportunities. I can’t wait to see the <a href="https://conference.pyladies.com">keynotes</a> from six global leaders in Python.</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="../../static/images/2023/2023-11-20-pyladiescon.webp" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="PyLadies Global Conference"><img src="https://decorator-proficiencies-75861.netlify.app/static/images/2023/2023-11-20-pyladiescon.webp" title="PyLadies Global Conference" class="img-fluid figure-img" alt="PyLadies Global Conference"></a></p>
<figcaption>PyLadies Global Conference</figcaption>
</figure>
</div>
<p>The <a href="https://conference.pyladies.com">speakers</a> and attendees will be around the world. I’m looking forwart to the talks and learning from each other.</p>
<p>PyLadiesCon is free and open to everyone. If you are able, please consider a donation to help PyLadies continue to grow and thrive.</p>
</section>
<section id="joining-as-a-sponsor" class="level2">
<h2 class="anchored" data-anchor-id="joining-as-a-sponsor">Joining as a Sponsor</h2>
<p>To celebrate all which PyLadies has given me for more than a decade, I’m <a href="https://conference.pyladies.com/index.html">sponsoring PyLadiesCon as a Partner</a>. Partnership describes well my rich relationship with PyLadies as an organizer, leader, mentor, learner, and friend.</p>
<p><strong>I’m thankful for the opportunity to give back to PyLadies.</strong></p>
<p><a href="../../static/images/2023/2023-11-20-pyladies-sponsor.webp" class="lightbox" data-gallery="quarto-lightbox-gallery-2"><img src="https://decorator-proficiencies-75861.netlify.app/static/images/2023/2023-11-20-pyladies-sponsor.webp" title="PyLadiesCon Sponsor" class="img-fluid"></a></p>
</section>
<section id="thank-you" class="level2">
<h2 class="anchored" data-anchor-id="thank-you">Thank You</h2>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="../../static/images/2023/2023-11-20-pyladies-office.webp" class="lightbox" data-gallery="quarto-lightbox-gallery-3" title="PyLadies Snowboard in my office"><img src="https://decorator-proficiencies-75861.netlify.app/static/images/2023/2023-11-20-pyladies-office.webp" title="PyLadies Snowboard in my office" class="img-fluid figure-img" alt="PyLadies Snowboard in my office"></a></p>
<figcaption>PyLadies Snowboard in my office</figcaption>
</figure>
</div>


</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a> ]]></description>
  <category>tech</category>
  <category>pyladies</category>
  <category>python</category>
  <category>conference</category>
  <category>global</category>
  <guid>https://decorator-proficiencies-75861.netlify.app/blog/posts/2023-11-20-why-sponsor-pyladies.html</guid>
  <pubDate>Mon, 20 Nov 2023 00:00:00 GMT</pubDate>
  <media:content url="https://decorator-proficiencies-75861.netlify.app/static/images/2023/2023-11-20-pyladies-office.webp" medium="image" type="image/webp"/>
</item>
<item>
  <title>Let’s make something Shiny and Interactive</title>
  <dc:creator>Carol Willing</dc:creator>
  <link>https://decorator-proficiencies-75861.netlify.app/blog/posts/2023-06-04-shiny.html</link>
  <description><![CDATA[ 





<div id="5511f754" class="cell" data-execution_count="1">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> ipyleaflet <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> Map, Marker, basemaps, basemap_to_tiles</span>
<span id="cb1-2">m <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Map(</span>
<span id="cb1-3">  basemap<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>basemap_to_tiles(</span>
<span id="cb1-4">    basemaps.NASAGIBS.ModisTerraTrueColorCR, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"2017-04-08"</span></span>
<span id="cb1-5">  ),</span>
<span id="cb1-6">  center<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">52.204793</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">360.121558</span>),</span>
<span id="cb1-7">  zoom<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span></span>
<span id="cb1-8">)</span>
<span id="cb1-9">m.add_layer(Marker(location<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">52.204793</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">360.121558</span>)))</span>
<span id="cb1-10">m</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="1">
<script type="application/vnd.jupyter.widget-view+json">
{"model_id":"3657f92030d248dfb5476ecfb717296b","version_major":2,"version_minor":0,"quarto_mimetype":"application/vnd.jupyter.widget-view+json"}
</script>
</div>
</div>
<div id="cell-fig-polar" class="cell" data-execution_count="2">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb2-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> numpy <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> np</span>
<span id="cb2-2"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> matplotlib.pyplot <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> plt</span>
<span id="cb2-3">r <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> np.arange(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.01</span>)</span>
<span id="cb2-4">theta <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> np.pi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> r</span>
<span id="cb2-5">fig, ax <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> plt.subplots(</span>
<span id="cb2-6">  subplot_kw <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> {<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'projection'</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'polar'</span>} </span>
<span id="cb2-7">)</span>
<span id="cb2-8">ax.plot(theta, r)</span>
<span id="cb2-9">ax.set_rticks([<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.5</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>])</span>
<span id="cb2-10">ax.grid(<span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)</span>
<span id="cb2-11">plt.show()</span></code></pre></div></div>
<div class="cell-output cell-output-display">
<div id="fig-polar" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-polar-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<a href="2023-06-04-shiny_files/figure-html/fig-polar-output-1.png" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="Figure&nbsp;1: A line plot on a polar axis"><img src="https://decorator-proficiencies-75861.netlify.app/blog/posts/2023-06-04-shiny_files/figure-html/fig-polar-output-1.png" width="450" height="439" class="figure-img"></a>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-polar-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1: A line plot on a polar axis
</figcaption>
</figure>
</div>
</div>
</div>
<div id="43cf8446" class="cell" data-execution_count="3">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb3-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> ipywidgets <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> widgets</span>
<span id="cb3-2"></span>
<span id="cb3-3">slider <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> widgets.IntSlider(value <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>, <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">max</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>)</span>
<span id="cb3-4">slider</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="3">
<script type="application/vnd.jupyter.widget-view+json">
{"model_id":"403c005742974fabbf915e8398a808b5","version_major":2,"version_minor":0,"quarto_mimetype":"application/vnd.jupyter.widget-view+json"}
</script>
</div>
</div>



<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a> ]]></description>
  <guid>https://decorator-proficiencies-75861.netlify.app/blog/posts/2023-06-04-shiny.html</guid>
  <pubDate>Sun, 04 Jun 2023 00:00:00 GMT</pubDate>
  <media:content url="https://decorator-proficiencies-75861.netlify.app/static/images/2023/2023-06-04-polar-image.png" medium="image" type="image/png" height="139" width="144"/>
</item>
<item>
  <title>AI Ethics, Posts, and a Madlib</title>
  <dc:creator>Carol Willing</dc:creator>
  <link>https://decorator-proficiencies-75861.netlify.app/blog/posts/2023-06-04-ai-ethics.html</link>
  <description><![CDATA[ 





<section id="madlib-ai-ethics-edition" class="level2">
<h2 class="anchored" data-anchor-id="madlib-ai-ethics-edition">Madlib: AI Ethics Edition</h2>
<p>Instructions: Fill in the blanks with the appropriate word types (noun, verb, adjective, etc.) to complete the AI ethics-themed story.</p>
<p>Once upon a time, in a (noun) _______________, there was a brilliant (noun) _______________ named Dr.&nbsp;(name) _______________. Driven by their passion for (noun) _______________, they set out to create an (adjective) _______________ AI system.</p>
<p>But Dr.&nbsp;(name) _______________ knew that building an ethical AI required careful (noun) _______________. They wanted to ensure that their creation was (adjective) _______________, fair, and (adjective) _______________. So, they implemented a set of (plural noun) _______________ to guide the AI’s behavior.</p>
<p>First, the AI was programmed to prioritize (noun) _______________ and protect the (plural noun) _______________ of all individuals. It was designed to respect (noun) _______________ and avoid any (adjective) _______________ or (adjective) _______________ biases.</p>
<p>Next, Dr.&nbsp;(name) _______________ incorporated (plural noun) _______________ that promoted transparency and (noun) _______________. They wanted the AI to be accountable for its actions, allowing users to understand how it (verb) _______________ decisions.</p>
<p>Finally, to prevent (noun) _______________ or (noun) _______________ use, Dr.&nbsp;(name) _______________ programmed the AI to follow strict (plural noun) _______________ and adhere to (adjective) _______________ guidelines.</p>
<p>With their hard work and dedication to AI ethics, Dr.&nbsp;(name) _______________ successfully created an AI system that was not only (adjective) _______________ but also aligned with their values and commitment to (noun) _______________.</p>
<p>And so, the AI ventured into the world, spreading (noun) _______________ and contributing to the (noun) _______________ of society, all while upholding the principles of (noun) _______________.</p>
<p>Remember, when it comes to AI ethics, every (noun) _______________ and (noun) _______________ matters. Let’s work together to create a future where AI serves as a force for good and (verb) _______________ our shared values.</p>


</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a> ]]></description>
  <category>AI</category>
  <category>ethics</category>
  <category>madlib</category>
  <category>research</category>
  <guid>https://decorator-proficiencies-75861.netlify.app/blog/posts/2023-06-04-ai-ethics.html</guid>
  <pubDate>Sun, 04 Jun 2023 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Migrating to a Quarto website and blog</title>
  <dc:creator>Carol Willing</dc:creator>
  <link>https://decorator-proficiencies-75861.netlify.app/blog/posts/2023-06-03-migrating-quarto.html</link>
  <description><![CDATA[ 





<p>Over the years, I’ve used different frameworks for my personal website: wordpress, hugo, mkdocs. This weekend, I migrated to <a href="https://quarto.org">Quarto</a>, a fairly new open source project sponsored by <a href="https://posit.co/">Posit</a>.</p>
<section id="why-quarto" class="level2">
<h2 class="anchored" data-anchor-id="why-quarto">Why Quarto?</h2>
<p>I’ve been playing around with Quarto for a few months, and I’ve been very impressed by its ease of use and its support of its documentation features useful for science. Quarto supports <a href="https://jupyter.org">Jupyter notebooks</a>, Markdown flavors, different programming languages for code listing, math and scientific notation, and a variety of deployment options.</p>
<section id="key-benefits" class="level3">
<h3 class="anchored" data-anchor-id="key-benefits">Key benefits</h3>
<p>Overall, Quarto is straightforward to use. It’s CLI interface is limited which is a good thing since it makes it easy to get up and running quickly. It comes with sensible defaults and excellent documentation for extending beyond the basics. It integrates well in modern editor workflows. A particularly nice touch is its <code>Render</code> button in VS Code which makes it easy to preview a document while creating it.</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="../../static/images/2023/2023-06-03-quarto.webp" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="Quarto Render button in VS Code"><img src="https://decorator-proficiencies-75861.netlify.app/static/images/2023/2023-06-03-quarto.webp" class="img-fluid figure-img" alt="Quarto Render button in VS Code"></a></p>
<figcaption><em>Quarto Render button in VS Code</em></figcaption>
</figure>
</div>
</section>
<section id="standards-pandoc-and-lua" class="level3">
<h3 class="anchored" data-anchor-id="standards-pandoc-and-lua">Standards, pandoc, and Lua</h3>
<p>Quarto has embraced open source standards and defacto standards, and it will likely become a future swiss army knife for scientific communication. It supports markdown flavors, <code>.ipynb</code> notebook formats, and all of the goodness of <a href="https://pandoc.org">pandoc</a> for file format conversion. Speaking of pandoc, Quarto’s development team made a great decision to use <a href="https://www.lua.org">Lua</a> for extending its functionality. Lua, a high-level scripting language,has been the preferred language for <a href="https://pandoc.org/lua-filters.html">Pandoc filters</a> which enable walking the pandoc abstract syntax tree (AST) of a document during its writing or parsing phases. Thoughtfully, Quarto’s devs have documented best practices for <a href="https://quarto.org/docs/extensions/lua.html">learning and using Lua for Quarto extensions</a>.</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="../../static/images/2023/2023-06-03-quarto-doc.webp" class="lightbox" data-gallery="quarto-lightbox-gallery-2" title="Quarto Documentation"><img src="https://decorator-proficiencies-75861.netlify.app/static/images/2023/2023-06-03-quarto-doc.webp" class="img-fluid figure-img" alt="Quarto Documentation"></a></p>
<figcaption><em>Quarto Documentation</em></figcaption>
</figure>
</div>
</section>
</section>
<section id="basic-steps" class="level2">
<h2 class="anchored" data-anchor-id="basic-steps">Basic steps</h2>
<p>Here are the high-level steps that I took to migrate my existing site to Quarto and host it on Netlify. I used my existing repo, created a migration branch, and then merged it into the main branch.</p>
<section id="installation" class="level3">
<h3 class="anchored" data-anchor-id="installation">Installation</h3>
<ol type="1">
<li>Install Quarto from their website.</li>
<li>Install the VS Code extension for Quarto and optionally Lua if you are interested in extensions development. If you use an editor other than VS Code, Quarto supports other integrations and has a basic CLI interface.</li>
</ol>
</section>
<section id="configuration" class="level3">
<h3 class="anchored" data-anchor-id="configuration">Configuration</h3>
<ol start="3" type="1">
<li>Creating a Quarto project was the next step. I wasn’t sure whether to select <code>website</code> or <code>blog</code>. I chose <code>website</code> and decided that I could add the blog manually later. I followed <a href="https://quarto.org/docs/websites/">Quarto’s docs</a>.</li>
<li>Review the <code>_quarto.yml</code> configuration file. I made sure that I had a <code>project block</code> and an output directory:</li>
</ol>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode yml code-with-copy"><code class="sourceCode yaml"><span id="cb1-1"><span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">---</span></span>
<span id="cb1-2"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">project</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span></span>
<span id="cb1-3"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">  </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">type</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> website</span></span>
<span id="cb1-4"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">  </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">output-dir</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> _site</span></span>
<span id="cb1-5"><span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">---</span></span></code></pre></div></div>
<ol start="5" type="1">
<li>Install the <a href="https://github.com/sellorm/quarto-social-embeds"><strong>quarto-social-embeds</strong> extension</a> into <code>_extensions</code> directory to support shortcodes that were already in my existing markdown files.</li>
</ol>
</section>
<section id="content-migration" class="level3">
<h3 class="anchored" data-anchor-id="content-migration">Content migration</h3>
<ol start="6" type="1">
<li><p>Copy my existing markdown files for a webpage into the root of the repo. I left them as <code>.md</code> files but I could have renamed them to <code>.qmd</code> files.</p></li>
<li><p>Create a <code>static</code> directory for images and other static files.</p></li>
<li><p>Create a <code>blog</code> directory at the root of the repo. Also create a <code>posts</code> directory inside of the <code>blog</code> directory. Copy my exisitng markdown files into the posts directory. Again, I left them as <code>.md</code> files but I could have renamed them to <code>.qmd</code> files. In the <code>blog</code> directory, I created an <code>index.qmd</code> file which will be the landing page for the blog. The <code>index.qmd</code> file included this as content:</p></li>
</ol>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode md code-with-copy"><code class="sourceCode markdown"><span id="cb2-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">---</span></span>
<span id="cb2-2"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">title:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> "Blog listing"</span></span>
<span id="cb2-3"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">listing:</span></span>
<span id="cb2-4"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">  contents: posts</span></span>
<span id="cb2-5"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">  type: grid</span></span>
<span id="cb2-6"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">  image-height: 200px</span></span>
<span id="cb2-7"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">  image-placeholder: "../static/images/wallpaper_symbol.png"</span></span>
<span id="cb2-8"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">  grid-columns: 3</span></span>
<span id="cb2-9"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">  grid-item-border: true</span></span>
<span id="cb2-10"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">  grid-item-align: left</span></span>
<span id="cb2-11"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">  date-format: short</span></span>
<span id="cb2-12"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">  feed: true</span></span>
<span id="cb2-13"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">  filter-ui: true</span></span>
<span id="cb2-14"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">  sort-ui: true</span></span>
<span id="cb2-15"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">  sort: "date desc"</span></span>
<span id="cb2-16"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">  categories: true</span></span>
<span id="cb2-17"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">---</span></span></code></pre></div></div>
</section>
<section id="metadata-updates" class="level3">
<h3 class="anchored" data-anchor-id="metadata-updates">Metadata updates</h3>
<ol start="9" type="1">
<li>Next, I edited the metadata at the top of each <strong>blog post markdown file</strong>. Using the <a href="https://quarto.org/docs/guide/">guide</a> and <a href="https://quarto.org/docs/reference/">reference</a> docs, I added a title, author, date, and description. I also added a <code>draft: false</code> line to the metadata of each file that I wanted to publish. I also created a list of categories for each post.</li>
</ol>
<p>An example of the metadata for this post is:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode md code-with-copy"><code class="sourceCode markdown"><span id="cb3-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">---</span></span>
<span id="cb3-2"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">title:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> "Migrating to a Quarto website and blog"</span></span>
<span id="cb3-3"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">description:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> "Why and how I migrated my website and blog to Quarto"</span></span>
<span id="cb3-4"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">categories:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> [tech, quarto, markdown, lua, site, blog]</span></span>
<span id="cb3-5"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">author:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> Carol Willing</span></span>
<span id="cb3-6"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">date:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> 2023-06-03</span></span>
<span id="cb3-7"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">draft:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> false</span></span>
<span id="cb3-8"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">image:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> ../../static/images/2023/2023-06-03-quarto.webp</span></span>
<span id="cb3-9"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">---</span></span></code></pre></div></div>
<ol start="10" type="1">
<li>I also edited the <strong>web page markdown files</strong> to add a title and whether to display the sidebar on the page. For example on the Contact page:</li>
</ol>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode md code-with-copy"><code class="sourceCode markdown"><span id="cb4-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">---</span></span>
<span id="cb4-2"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">title:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> "Contact"</span></span>
<span id="cb4-3"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">sidebar:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> false</span></span>
<span id="cb4-4"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">---</span></span></code></pre></div></div>
</section>
<section id="theme-and-navigation" class="level3">
<h3 class="anchored" data-anchor-id="theme-and-navigation">Theme and Navigation</h3>
<ol start="11" type="1">
<li>I updated the <code>_quarto.yml</code> file to use a light and dark <strong>theme</strong> which can be toggled by the reader.</li>
</ol>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode yml code-with-copy"><code class="sourceCode yaml"><span id="cb5-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">format</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span></span>
<span id="cb5-2"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">  </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">html</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span></span>
<span id="cb5-3"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">    </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">theme</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span></span>
<span id="cb5-4"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">      </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">light</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> flatly</span></span>
<span id="cb5-5"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">      </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">dark</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> darkly</span></span>
<span id="cb5-6"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">    </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">toc</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> </span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">true</span></span></code></pre></div></div>
<ol start="12" type="1">
<li>I added a <strong>navigation menu</strong> to the <code>_quarto.yml</code> file.</li>
</ol>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb6" style="background: #f1f3f5;"><pre class="sourceCode yml code-with-copy"><code class="sourceCode yaml"><span id="cb6-1"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">  </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">navbar</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span></span>
<span id="cb6-2"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">    </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">background</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> primary</span></span>
<span id="cb6-3"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">    </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">search</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> </span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">true</span></span>
<span id="cb6-4"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">    </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">left</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span></span>
<span id="cb6-5"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">      </span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">-</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">href</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> index.md</span></span>
<span id="cb6-6"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">        </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">text</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> Home</span></span>
<span id="cb6-7"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">        </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">aria-label</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> home</span></span>
<span id="cb6-8"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">      </span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">-</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">href</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> about.md</span></span>
<span id="cb6-9"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">        </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">text</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> About</span></span>
<span id="cb6-10"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">        </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">aria-label</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> about</span></span>
<span id="cb6-11"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">      </span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">-</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">href</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> speaking.md</span></span>
<span id="cb6-12"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">        </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">text</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> Speaking</span></span>
<span id="cb6-13"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">        </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">aria-label</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> speaking</span></span>
<span id="cb6-14"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">      </span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">-</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">href</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> contact.qmd</span></span>
<span id="cb6-15"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">        </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">text</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> Contact</span></span>
<span id="cb6-16"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">        </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">aria-label</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> contact</span></span>
<span id="cb6-17"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">      </span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">-</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">href</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> blog/index.qmd</span></span>
<span id="cb6-18"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">        </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">text</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> Blog</span></span>
<span id="cb6-19"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">        </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">aria-label</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> blog</span></span></code></pre></div></div>
<ol start="13" type="1">
<li>I added a <strong>footer</strong> with right, left, and center sections.</li>
</ol>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb7" style="background: #f1f3f5;"><pre class="sourceCode yml code-with-copy"><code class="sourceCode yaml"><span id="cb7-1"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">  </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">page-footer</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span></span>
<span id="cb7-2"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">    left</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">: </span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">|</span></span>
<span id="cb7-3">      Copyright: 2013-2023, Carol Willing.</span>
<span id="cb7-4"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">    </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">center</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> </span></span>
<span id="cb7-5"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">      </span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">-</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">icon</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> github</span></span>
<span id="cb7-6"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">        </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">href</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> https://github.com/willingc</span></span>
<span id="cb7-7"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">      </span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">-</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">icon</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> linkedin</span></span>
<span id="cb7-8"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">        </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">href</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> https://www.linkedin.com/in/carolwilling/</span></span>
<span id="cb7-9"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">      </span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">-</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">icon</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> twitter</span></span>
<span id="cb7-10"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">        </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">href</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> https://twitter.com/WillingCarol</span></span>
<span id="cb7-11"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">      </span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">-</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">icon</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> rss</span></span>
<span id="cb7-12"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">        </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">href</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> index.xml</span></span>
<span id="cb7-13"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">    right</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">: </span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">|</span></span>
<span id="cb7-14">      This site was built with &lt;a href="https://quarto.org/"&gt;Quarto&lt;/a&gt;.</span></code></pre></div></div>
<ol start="14" type="1">
<li>I added a <strong>favicon</strong> and <strong>repo</strong> information. My <a href="https://github.com/willingc/willing-consulting-2022/blob/695f037ef5b4962bab07d7255b4d36f2602845ac/_quarto.yml">current <code>_quarto.yml</code> file</a> can be found on GitHub.</li>
</ol>
</section>
<section id="publishing" class="level3">
<h3 class="anchored" data-anchor-id="publishing">Publishing</h3>
<ol start="15" type="1">
<li><p>I published my site with Netlify and followed the excellent instructions in <a href="https://quarto.org/docs/publishing/netlify.html">Quarto’s docs</a>.</p></li>
<li><p>The current site is deployed at <a href="https://willingconsulting.com">https://willingconsulting.com</a>.</p></li>
</ol>
</section>
</section>
<section id="next-steps" class="level2">
<h2 class="anchored" data-anchor-id="next-steps">Next steps</h2>
<p>I’m looking forward to exploring more of Quarto’s power. I plan to move some of my favorite Jupyter notebooks to my site as well as my personal cheatsheets.I also plan to set up an RSS feed for my blog.</p>
<p>I’m also interested in trying some of the other document formats that Quarto supports such as presentations, books, and papers. I also am looking into migrating my Obsidian files to a private Quarto site.</p>
</section>
<section id="conclusion" class="level2">
<h2 class="anchored" data-anchor-id="conclusion">Conclusion</h2>
<p>Migrating my site to Quarto was a fun afternoon project. Quarto’s documentation is excellent and helped me get up and running quickly. I’m looking forward to continue exploring this powerful communication tool.</p>


</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a> ]]></description>
  <category>tech</category>
  <category>quarto</category>
  <category>markdown</category>
  <category>lua</category>
  <category>site</category>
  <category>blog</category>
  <guid>https://decorator-proficiencies-75861.netlify.app/blog/posts/2023-06-03-migrating-quarto.html</guid>
  <pubDate>Sat, 03 Jun 2023 00:00:00 GMT</pubDate>
  <media:content url="https://decorator-proficiencies-75861.netlify.app/static/images/2023/2023-06-03-quarto.webp" medium="image" type="image/webp"/>
</item>
<item>
  <title>Serving on the Inaugural Python Steering Council</title>
  <dc:creator>Carol Willing</dc:creator>
  <link>https://decorator-proficiencies-75861.netlify.app/blog/posts/2019-11-02-python-steering-retro.html</link>
  <description><![CDATA[ 





<p><strong>The successful release of Python 3.8 (thanks Łukasz and everyone who contributed) begins a new chapter for the Python Steering Council.</strong> Under the new governance of core development, described in <a href="https://www.python.org/dev/peps/pep-0013/#electing-the-council">PEP 13</a>, a new Steering Council is elected after each major release cycle.</p>
<!-- more -->
<section id="where-can-i-read-about-being-a-steering-council-member" class="level2">
<h2 class="anchored" data-anchor-id="where-can-i-read-about-being-a-steering-council-member">Where can I read about being a Steering Council member</h2>
<ul>
<li><a href="https://www.python.org/dev/peps/pep-0013">PEP 13</a></li>
<li><a href="https://snarky.ca/what-its-like-to-be-on-the-python-steering-council/">Brett’s recent post</a>, <em>What It’s Like to Be on the Python Steering Council</em>. Brett’s post does a great job of describing our processes, time estimates, and description of work. I think his post accurately reflects my experience as a council member too.</li>
<li>The public <a href="https://github.com/python/steering-council#steering-council">Steering Council repo</a>. It contains an onboarding document which we hope will help new Council Members. It includes links out to other Python governance resources and PEPs. There’s also a summary from an external non-profit resource with some tips on <a href="https://github.com/python/steering-council/blob/master/process/best-practices.md">effective governance</a>.</li>
</ul>
</section>
<section id="tell-me-about-a-steering-council-meeting" class="level2">
<h2 class="anchored" data-anchor-id="tell-me-about-a-steering-council-meeting">Tell me about a Steering Council meeting</h2>
<section id="how-often-do-you-meet" class="level3">
<h3 class="anchored" data-anchor-id="how-often-do-you-meet"><em>How often do you meet?</em></h3>
<p>This year, the Steering Council has held one hour weekly meetings. As we worked through the backlog of PEPs, we found meeting weekly was a good cadence. Since it was working well, we kept the weekly schedule.</p>
</section>
<section id="what-gets-discussed" class="level3">
<h3 class="anchored" data-anchor-id="what-gets-discussed"><em>What gets discussed?</em></h3>
<p>Our discussions focus around our agenda each week. The weekly agenda covers the following areas:</p>
<ul>
<li>PEPs</li>
<li>Projects</li>
<li>Processes</li>
<li>Other</li>
</ul>
<p>The agenda is designed to reflect the core responsibilities of the Steering Council as written in PEP 13.</p>
</section>
<section id="what-if-you-miss-a-meeting" class="level3">
<h3 class="anchored" data-anchor-id="what-if-you-miss-a-meeting"><em>What if you miss a meeting?</em></h3>
<p>Though we have made attending the meetings a high priority, there are times when travel and life prevent someone from attending. We have an agenda for each meeting which has the same format each week (<em>we use a GitHub issue template for the baseline agenda</em>). If you will miss a meeting, you can add comments on the agenda beforehand.</p>
<p>Minutes are taken during each meeting, and all are published to a private Steering Council repo. We use a Skype call for meeting so that we can see each other while we discuss topics and we can share screens if needed.</p>
<p>After each meeting, we create a GitHub issue for each action item that comes out of the regular meeting. We’ve found using issues for action items to be very helpful and productive.</p>
</section>
</section>
<section id="what-does-the-steering-council-do-in-between-meetings" class="level2">
<h2 class="anchored" data-anchor-id="what-does-the-steering-council-do-in-between-meetings">What does the Steering Council do in-between meetings?</h2>
<p>In between meetings, the Council works on action items from the prior meeting and ongoing special projects. We discuss and share information on the mailing list, PEPs, and Discourse.</p>
</section>
<section id="how-has-the-council-been-working-out-so-far" class="level2">
<h2 class="anchored" data-anchor-id="how-has-the-council-been-working-out-so-far">How has the Council been working out so far?</h2>
<p>I believe that we have found a good process for preparing, running, and following up on meetings. We’ve tried to do as much as possible in public communication channels. It’s been our goal to provide reports out to the core development community every couple of months. I believe that we can improve the frequency of these reports in the future.</p>
<p>Ewa and the PSF Team have been very helpful in supporting us this year. Thanks Ewa and team for the organizational help and insights that you shared. It has been a team effort.</p>
</section>
<section id="should-i-run-in-the-election-to-be-a-part-of-steering-council" class="level2">
<h2 class="anchored" data-anchor-id="should-i-run-in-the-election-to-be-a-part-of-steering-council">Should I run in the election to be a part of Steering Council?</h2>
<p>Yes! If you have a strong interest in serving, I would go ahead and nominate yourself. Different interests, experience, and viewpoints strengthen the Council and improves its effectiveness. Details on nominations can be found on <a href="https://discuss.python.org/t/about-the-steering-council-nominations-category/2459">Discourse</a>.</p>
<p>One helpful thing to keep in mind is that the Steering Council represents all of the core developers. The Council also works to sustain and improve the language, support good processes for core development, and to foster a healthy future for Python.</p>
</section>
<section id="wrap-up" class="level2">
<h2 class="anchored" data-anchor-id="wrap-up">Wrap Up</h2>
<p>To Barry, Brett, Guido, and Nick, thanks for your dedication and thoughtfulness through this transition to the new governance structure. I’m glad that we worked so well together as a team.</p>
<p>The next Steering Council will be starting in a good place. I’m looking forward to supporting the next Steering Council, their work in 2020, and the bright future of Python.</p>
<p><em>Photo credit: LWN.net</em> <img src="https://decorator-proficiencies-75861.netlify.app/static/images/2019/pycon-psc.jpg" class="img-fluid" alt="Python Steering Council"></p>


</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a> ]]></description>
  <category>tech</category>
  <category>python</category>
  <category>steering-council</category>
  <category>governance</category>
  <guid>https://decorator-proficiencies-75861.netlify.app/blog/posts/2019-11-02-python-steering-retro.html</guid>
  <pubDate>Sat, 02 Nov 2019 00:00:00 GMT</pubDate>
  <media:content url="https://decorator-proficiencies-75861.netlify.app/static/images/2019/pycon-psc.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Trying the Python 3.8 beta with Jupyter Notebook</title>
  <dc:creator>Carol Willing</dc:creator>
  <link>https://decorator-proficiencies-75861.netlify.app/blog/posts/2019-09-19-python-beta.html</link>
  <description><![CDATA[ 





<p>Trying out a pre-release will help you become familiar with new features to determine if they would be good to use in your projects.</p>
<!-- more -->
<section id="download-the-installer" class="level2">
<h2 class="anchored" data-anchor-id="download-the-installer">Download the installer</h2>
<p>Navigate to the <a href="https://www.python.org/downloads/release/python-380b4/">Python 3.8.0b4 release page</a>. Scroll down to the <strong>Files</strong> section:</p>
<p><a href="../../static/images/2019/python38files.webp" class="lightbox" data-gallery="quarto-lightbox-gallery-1"><img src="https://decorator-proficiencies-75861.netlify.app/static/images/2019/python38files.webp" class="img-fluid"></a></p>
<p>To install on macOS, select the link <code>macOS 64-bit installer</code> and download the linked <code>.dmg</code> installer. Although this is a pre-release version of 3.8.0, the installer will prompt you for responses just as it does for released versions such as 3.7.4.</p>
</section>
<section id="check-the-installation" class="level2">
<h2 class="anchored" data-anchor-id="check-the-installation">Check the installation</h2>
<p>To check your installation, enter in a terminal:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode bash code-with-copy"><code class="sourceCode bash"><span id="cb1-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">python3.8</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">--version</span>  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># should display Python 3.8.0b4</span></span></code></pre></div></div>
</section>
<section id="to-use-the-repl" class="level2">
<h2 class="anchored" data-anchor-id="to-use-the-repl">To use the REPL</h2>
<p>To use the beta REPL, enter in a terminal:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode bash code-with-copy"><code class="sourceCode bash"><span id="cb2-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">python3.8</span></span></code></pre></div></div>
<p>The REPL will launch with the following output:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb3-1">Python <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.8.0</span><span class="er" style="color: #AD0000;
background-color: null;
font-style: inherit;">b4</span> (v3<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">.8.0</span><span class="er" style="color: #AD0000;
background-color: null;
font-style: inherit;">b4</span>:d93605de72, Aug <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">29</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2019</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">21</span>:<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">47</span>:<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">47</span>)</span>
<span id="cb3-2">[Clang <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.0</span> (clang<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">600.0.57</span>)] on darwin</span>
<span id="cb3-3">Type <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"help"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"copyright"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"credits"</span> <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">or</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"license"</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> more information.</span>
<span id="cb3-4"><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;&gt;&gt;</span></span></code></pre></div></div>
<p>Exit the REPL using Cntl+D or <code>exit()</code>.</p>
</section>
<section id="install-jupyter-notebook-with-python-3.8.0b4" class="level2">
<h2 class="anchored" data-anchor-id="install-jupyter-notebook-with-python-3.8.0b4">Install Jupyter notebook with Python 3.8.0b4</h2>
<section id="create-and-activate-a-virtual-environment" class="level3">
<h3 class="anchored" data-anchor-id="create-and-activate-a-virtual-environment">Create and activate a virtual environment</h3>
<p>First, create the virtual environment in a Terminal:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode bash code-with-copy"><code class="sourceCode bash"><span id="cb4-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">python3.8</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-m</span> venv testenv</span></code></pre></div></div>
<p>where <code>testenv</code> is the name of the virtual environment.</p>
<p>Activate the virtual environment:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode bash code-with-copy"><code class="sourceCode bash"><span id="cb5-1"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">source</span> testenv/bin/activate</span></code></pre></div></div>
<p>You should now see <code>(testenv)</code> above your command-line prompt.</p>
</section>
<section id="install-the-jupyter-notebook" class="level3">
<h3 class="anchored" data-anchor-id="install-the-jupyter-notebook">Install the Jupyter notebook</h3>
<p>Install <code>jupyter</code> using <code>pip</code>:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb6" style="background: #f1f3f5;"><pre class="sourceCode bash code-with-copy"><code class="sourceCode bash"><span id="cb6-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">pip</span> install jupyter</span></code></pre></div></div>
</section>
<section id="try-it" class="level3">
<h3 class="anchored" data-anchor-id="try-it">Try it</h3>
<p>Enter:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb7" style="background: #f1f3f5;"><pre class="sourceCode bash code-with-copy"><code class="sourceCode bash"><span id="cb7-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">jupyter</span> notebook</span></code></pre></div></div>
<p>The Jupyter notebook interface should launch. Select a new Python3 notebook.</p>
<p>You can now begin exploring the new features in Python 3.8. This example shows <a href="https://docs.python.org/3.8/whatsnew/3.8.html#f-strings-support-for-self-documenting-expressions-and-debugging">f-strings support for self-documenting expressions and debugging</a>.</p>
<p><a href="../../static/images/2019/notebook-38.webp" class="lightbox" data-gallery="quarto-lightbox-gallery-2"><img src="https://decorator-proficiencies-75861.netlify.app/static/images/2019/notebook-38.webp" class="img-fluid"></a></p>


</section>
</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a> ]]></description>
  <category>tech</category>
  <category>python</category>
  <category>jupyter</category>
  <category>notebook</category>
  <guid>https://decorator-proficiencies-75861.netlify.app/blog/posts/2019-09-19-python-beta.html</guid>
  <pubDate>Thu, 19 Sep 2019 00:00:00 GMT</pubDate>
  <media:content url="https://decorator-proficiencies-75861.netlify.app/static/images/2019/notebook-38.webp" medium="image" type="image/webp"/>
</item>
<item>
  <title>Learning git: Locations, Remotes, and GitHub</title>
  <dc:creator>Carol Willing</dc:creator>
  <link>https://decorator-proficiencies-75861.netlify.app/blog/posts/2019-07-01-locations-and-git.html</link>
  <description><![CDATA[ 





<p>When you are new to git and GitHub, one of the first things that is helpful to learn is where your code is located. Do you want to contribute to open source or a friend’s project?</p>
<p>Two concepts will help you get started:</p>
<ul>
<li>The difference between git (tool) and GitHub (service)</li>
<li>The location of code repositories and how to refer to them</li>
</ul>
<p><em>Inspired by a <a href="https://www.slideshare.net/willingc/yes-you-can-git">talk given at Write Speak Code 2016</a>.</em></p>
<p><a href="../../static/images/2019/git-title.webp" class="lightbox" data-gallery="quarto-lightbox-gallery-1"><img src="https://decorator-proficiencies-75861.netlify.app/static/images/2019/git-title.webp" class="img-fluid"></a></p>
<hr>
<section id="tool-and-service" class="level2">
<h2 class="anchored" data-anchor-id="tool-and-service">Tool and Service</h2>
<p><strong><a href="https://git-scm.com/docs/">git</a></strong> is an open source tool which can be installed on a variety of computer systems.</p>
<p><strong><a href="https://github.com">GitHub</a></strong> is a cloud service that stores source code repositories.</p>
<p><a href="../../static/images/2019/git-01.webp" class="lightbox" data-gallery="quarto-lightbox-gallery-2"><img src="https://decorator-proficiencies-75861.netlify.app/static/images/2019/git-01.webp" class="img-fluid"></a></p>
</section>
<section id="understanding-repository-locations" class="level2">
<h2 class="anchored" data-anchor-id="understanding-repository-locations">Understanding Repository Locations</h2>
<p>By understanding this concept, your mastery of git and GitHub for development will advance quickly.</p>
<p>The old saying, <em>“Naming is hard.”</em>, definitely applies to git. While a handy tool, the jargon around using git makes it difficult for a new user to grasp concepts.</p>
<p><a href="../../static/images/2019/git-02.webp" class="lightbox" data-gallery="quarto-lightbox-gallery-3"><img src="https://decorator-proficiencies-75861.netlify.app/static/images/2019/git-02.webp" class="img-fluid"></a></p>
<p>First, let’s look at three locations: <code>local</code>, <code>origin</code>, and <code>upstream</code>. Code can be stored in all of these locations.</p>
<p><a href="../../static/images/2019/git-04.webp" class="lightbox" data-gallery="quarto-lightbox-gallery-4"><img src="https://decorator-proficiencies-75861.netlify.app/static/images/2019/git-04.webp" class="img-fluid"></a></p>
<p>Let’s start with <code>local</code>. The <code>local</code> location is the <code>git</code> tool running on your computer system.</p>
<p>For consistency, we will name the repository location of your account on GitHub, <code>origin</code>.</p>
<p>Finally, we will refer to the open source project’s repository with the location, <code>upstream</code>.</p>
<p><a href="../../static/images/2019/git-05.webp" class="lightbox" data-gallery="quarto-lightbox-gallery-5"><img src="https://decorator-proficiencies-75861.netlify.app/static/images/2019/git-05.webp" class="img-fluid"></a></p>
</section>
<section id="what-is-a-fork" class="level2">
<h2 class="anchored" data-anchor-id="what-is-a-fork">What is a fork?</h2>
<p>The process of creating a copy of an open source project and locating it in your GitHub account is called <code>forking</code>. In the GitHub user interface, you would do this by navigating to the open source project page and clicking the fork button.</p>
<p><a href="../../static/images/2019/git-06.webp" class="lightbox" data-gallery="quarto-lightbox-gallery-6"><img src="https://decorator-proficiencies-75861.netlify.app/static/images/2019/git-06.webp" class="img-fluid"></a></p>
</section>
<section id="getting-a-projects-code-onto-a-local-system" class="level2">
<h2 class="anchored" data-anchor-id="getting-a-projects-code-onto-a-local-system">Getting a project’s code onto a local system</h2>
<p>The process of cloning makes a replica of the repository located at the specified URL: <code>git clone &lt;URL&gt;</code> where <code>&lt;URL&gt;</code> is the repository’s project page that you wish to clone.</p>
<p><a href="../../static/images/2019/git-07.webp" class="lightbox" data-gallery="quarto-lightbox-gallery-7"><img src="https://decorator-proficiencies-75861.netlify.app/static/images/2019/git-07.webp" class="img-fluid"></a></p>
</section>
<section id="listing-and-adding-remotes" class="level2">
<h2 class="anchored" data-anchor-id="listing-and-adding-remotes">Listing and adding remotes</h2>
<p>A <strong>remote</strong> is the term that git uses to refer to any repository located in version control outside of your local computer.</p>
<p><code>git remote -v</code> will print all of the remotes that a local repository has access to. In this example, you can see that there is only one remote, <code>origin</code>, which corresponds to the repository on my GitHub account.</p>
<p><a href="../../static/images/2019/git-08.webp" class="lightbox" data-gallery="quarto-lightbox-gallery-8"><img src="https://decorator-proficiencies-75861.netlify.app/static/images/2019/git-08.webp" class="img-fluid"></a></p>
<p>To add a path from local to the <code>upstream</code> open source project, we need to tell git where the location of the open source project is. We can do this with the command: <code>git remote add upstream &lt;URL&gt;</code> where <code>&lt;URL&gt;</code> is the open source project’s repository that you to have a path accessible from <code>local</code>.</p>
</section>
<section id="recap" class="level2">
<h2 class="anchored" data-anchor-id="recap">Recap</h2>
<p>Remember:</p>
<ul>
<li>git is a tool</li>
<li>GitHub is a service</li>
<li>remotes are locations of different repositories</li>
<li>local usually refers to your local computer</li>
<li>remotes, often <code>origin</code> and <code>upstream</code>, are other repositories which are located somewhere different from local</li>
</ul>
<p><a href="../../static/images/2019/git-09.webp" class="lightbox" data-gallery="quarto-lightbox-gallery-9"><img src="https://decorator-proficiencies-75861.netlify.app/static/images/2019/git-09.webp" class="img-fluid"></a></p>
<p>There is still lots to learn about git and GitHub workflows. I hope this gives you a foundation to build upon.</p>


</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a> ]]></description>
  <category>tech</category>
  <category>git</category>
  <category>learning</category>
  <category>github</category>
  <guid>https://decorator-proficiencies-75861.netlify.app/blog/posts/2019-07-01-locations-and-git.html</guid>
  <pubDate>Mon, 01 Jul 2019 00:00:00 GMT</pubDate>
  <media:content url="https://decorator-proficiencies-75861.netlify.app/static/images/2019/git-title.webp" medium="image" type="image/webp"/>
</item>
<item>
  <title>Cool Stuff with Jupyter and IPython</title>
  <dc:creator>Carol Willing</dc:creator>
  <link>https://decorator-proficiencies-75861.netlify.app/blog/posts/2018-10-01-jupyter-ipython.html</link>
  <description><![CDATA[ 





<p>I love how Jupyter and IPython can empower learners. Here’s a GitHub gist that shares some of my favorite resources.</p>
<p><script src="https://gist.github.com/willingc/314eb1e20679ad33633a7cc75977a43a.js"></script></p>



<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a> ]]></description>
  <category>tech</category>
  <category>jupyter</category>
  <category>learning</category>
  <category>ipython</category>
  <guid>https://decorator-proficiencies-75861.netlify.app/blog/posts/2018-10-01-jupyter-ipython.html</guid>
  <pubDate>Mon, 01 Oct 2018 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Getting (re)Started - Resources</title>
  <dc:creator>Carol Willing</dc:creator>
  <link>https://decorator-proficiencies-75861.netlify.app/blog/posts/2018-09-30-getting-started.html</link>
  <description><![CDATA[ 





<p>If you share something more than three times, it’s a good idea to write it down for others to read. Over the past few years, I’ve made a few GitHub gists (gists are similar to short notes) which have links to resources.</p>
<!-- more -->
<p>Here’s one on getting started:</p>
<p><script src="https://gist.github.com/willingc/9f9612fc1a6209e39aefef3825702c80.js"></script></p>



<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a> ]]></description>
  <category>tech</category>
  <category>learning</category>
  <category>python</category>
  <category>returning</category>
  <guid>https://decorator-proficiencies-75861.netlify.app/blog/posts/2018-09-30-getting-started.html</guid>
  <pubDate>Sun, 30 Sep 2018 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Sunrise and a New Semester</title>
  <dc:creator>Carol Willing</dc:creator>
  <link>https://decorator-proficiencies-75861.netlify.app/blog/posts/2018-08-09-sunrise-semester.html</link>
  <description><![CDATA[ 





<p>For as long as I can remember, I have been passionate about using technology to help others learn and to offer access to inspiring educational resources. It’s a profound gift to be a small part of someone’s joy and excitement about learning something new. The satisfaction of being told that you have helped someone learn something new that they weren’t confident that they could do gives meaning to why technology matters most to me.</p>
<!-- more -->
<p>As I watch the sunrise, or more accurately the yellow tone in the sky increase, I’m looking forward to starting a new semester or chapter in my technology journey. Today, I’ll be spending my second day moving into a creative workspace and begin to focus full-time on empowering learning and improving interactive, life-long education.</p>
<p>I’m not leaving the Jupyter or Python world. I’m devoted to improving access for all to quality educational materials. I’ll be using a number of tools, such as <a href="https://jupyter.org">Jupyter notebooks</a>, <a href="https://python.org">Python</a>, <a href="https://jupyterhub.readthedocs.io">JupyterHub</a>, <a href="https://mybinder.org">Binder</a>, <a href="https://nteract.io">nteract</a>, <a href="https://p5js.org">p5.js</a>, <a href="https://github.com/adafruit/circuitpython">CircuitPython</a>, <a href="https://codewith.mu/">mu</a>, and <a href="https://edublocks.org/">EduBlocks</a>, to create and deliver educational materials and services.</p>
<p>I’m very excited to build some early side projects, such as <em>Crackers the Coding Friend</em> using CircuitPython and Adafruit’s open hardware CircuitPlayground and Crickt. It’s planned to be a whimsical robot friend, using open hardware and software, to help new developers with rubber duck debugging.</p>
<p>I’ll also be building upon a workshop that I gave to middle school and high school students at Cal Poly SLO this summer as part of the EPIC program. The workshop focused on interactivity in computer science, and how interactivity improves the learning experience and exploration of software code.</p>
<p>For the next few weeks, I’ll be getting ready for JupyterCon and sharing with you my vision for Jupyter in Education and the work which we have been doing this past year at Project Jupyter.</p>
<p>Thanks for reading this post. I’m looking forward to sharing more in a future post.</p>
<p>P.S. Thanks to the wonderful friends and family who encourage me to follow my dreams and to make an impact on others. Without your gentle encouragement and seeing something in me which I don’t always see in myself I would not have the courage to build my dreams. Hugs.</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="../../static/images/ada-blinka.jpg" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="Photo credit: pt at Adafruit"><img src="https://decorator-proficiencies-75861.netlify.app/static/images/ada-blinka.jpg" class="img-fluid figure-img" alt="Photo credit: pt at Adafruit"></a></p>
<figcaption><em>Photo credit: pt at Adafruit</em></figcaption>
</figure>
</div>



<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a> ]]></description>
  <category>tech</category>
  <category>circuitpython</category>
  <category>jupyter</category>
  <category>mu</category>
  <category>nteract</category>
  <category>jose</category>
  <category>jupyterhub</category>
  <category>binder</category>
  <category>learning</category>
  <guid>https://decorator-proficiencies-75861.netlify.app/blog/posts/2018-08-09-sunrise-semester.html</guid>
  <pubDate>Wed, 08 Aug 2018 00:00:00 GMT</pubDate>
  <media:content url="https://decorator-proficiencies-75861.netlify.app/static/images/ada-blinka.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Snakes and Planets</title>
  <dc:creator>Carol Willing</dc:creator>
  <link>https://decorator-proficiencies-75861.netlify.app/blog/posts/2017-06-04-snakes-planets.html</link>
  <description><![CDATA[ 





<p>As I get ready to step back from being a Director of the Python Software Foundation, I’m taking a moment to reflect back on the past two years on the PSF Board and open source. I enjoy coding in Python for its flexibility and rich ecosystem of libraries. Yet, it’s the Python community that I truly cherish.</p>
<!-- more -->
<p>For two years, I’ve been able to serve the Python community by putting my non-profit experience and management skills to work. We’ve increased transparency and openness, grown the non-profit’s governance toward best practices for an organization of the PSF’s size, and spread the adoption of Python globally and across industries and academia. The Board and the PSF staff, under Ewa’s leadership, have worked together to make Python a stronger language and community than two years ago.</p>
<p>There’s still work (especially with open source sustainability) to do; yet, I’ll save those thoughts for another post. Instead, I wish to share a few words of thanks to the Python and Jupyter communities. Although I grumble about slow changes when it comes to inclusion at times, I’m so, so grateful for all that I have learned from you.</p>
<p>I’ve learned some of the following:</p>
<ul>
<li>oboes, mazes, and motorcycles blend together nicely (thanks Lars)</li>
<li>selecting talks and tutorials is hard work but worth the effort (thanks PyCon)</li>
<li>giving a diversity keynote at SciPy is scary and then doing it again as a videotaped PyData Carolinas keynote was overwhelming, but I’m glad that I risked being vulnerable to share my story and the profound impact my mentor had on me (thanks Margot)</li>
<li>learning and temporary setbacks when coding is much more fun and encouraging when there are others to cheer you on (thanks San Diego Python and PyLadies)</li>
<li>building and using Jupyter has allowed me to work on a lifelong passion, spreading learning to more people and empowering them to improve the world (thanks Jupyter team and all those that use Jupyter for teaching)</li>
<li>acts of kindness have a big impact on others, even if you never hear thanks from them (thanks Code Newbies and Write/Speak/Code)</li>
<li>stepping back is a great alternative to giving up or burning out (thanks to all who have shared their stories with me and listened when I needed a safe place to share)</li>
<li>communities and people need nurturing and “simple is better than complex” (thanks for the Zen of Python)</li>
</ul>
<p>What’s wonderful is that this journey isn’t over but rather entering a new phase. As I step away as a PSF Director, I’m confident that the next Board will continue to improve and grow Python and its community. I’m excited to see what the next year brings. I hope to see you at the next CPython or Jupyter sprint and listen to what you are working on.</p>
<p>Thanks friends!</p>



<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a> ]]></description>
  <category>tech</category>
  <category>psf</category>
  <category>board</category>
  <category>governance</category>
  <guid>https://decorator-proficiencies-75861.netlify.app/blog/posts/2017-06-04-snakes-planets.html</guid>
  <pubDate>Sun, 04 Jun 2017 00:00:00 GMT</pubDate>
</item>
<item>
  <title>What’s a Fab Lab?</title>
  <dc:creator>Carol Willing</dc:creator>
  <link>https://decorator-proficiencies-75861.netlify.app/blog/posts/2015-08-09-whats-a-fab-lab.html</link>
  <description><![CDATA[ 





<p>A Fab Lab is a community space for people to gather and fabricate their dreams and ideas.</p>
<!-- more -->
<p>A <a href="http://fab.cba.mit.edu/about/faq/">formal definition of a Fab Lab</a> can be seen at the <a href="http://cba.mit.edu/">MIT Center for Bits and Atoms</a>. The <a href="https://fabfoundation.org">Fab Foundation’s website</a> has a map of many Fab Labs around the world and information about the Fab Lab charter and how to start a Fab Lab.</p>
<p>Fab Lab San Diego is my little corner for inspiration and outreach. We’re located in the heart of <a href="http://www.makersquarter.com/">Makers Quarter</a>. Here are a few links to some videos that give a good sense of Fab Lab San Diego, its mission, and its history.</p>
<p></p><div id="youtube-frame" style="position: relative; padding-bottom: 56.25%; /* 16:9 */ height: 0;"><iframe width="100%" height="" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" src="https://www.youtube.com/embed/LL4bVbkAn-M" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe></div> <em>Fab Lab San Diego’s Relaunch in Makers Quarter (Video by KPBS)</em><p></p>
<p></p><div id="youtube-frame" style="position: relative; padding-bottom: 56.25%; /* 16:9 */ height: 0;"><iframe width="100%" height="" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" src="https://www.youtube.com/embed/B1SiL0Mkn2o" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe></div> <em>An view of a day at the former Fab Lab San Diego location (Video by Fab Lab SD)</em><p></p>
<p></p><div id="youtube-frame" style="position: relative; padding-bottom: 56.25%; /* 16:9 */ height: 0;"><iframe width="100%" height="" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" src="https://www.youtube.com/embed/8uoTT-BoAgY" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe></div> <em>Prototyping for Balboa Park - Fun in a Cupcake Car!</em><p></p>
<p>Learn. Build. Share. Fab Labs and their outreach inspire individuals and build vibrant, innovative communities. I hope you visit one soon.</p>
<!--- gallery ids="588,510,592,512,595,600,596,590,594,591,593,597,513,404" --->



<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a> ]]></description>
  <category>tech</category>
  <category>arduino</category>
  <category>community</category>
  <category>education</category>
  <category>fablab</category>
  <category>open source</category>
  <category>outreach</category>
  <category>python</category>
  <category>raspberrypi</category>
  <category>build</category>
  <category>learn</category>
  <guid>https://decorator-proficiencies-75861.netlify.app/blog/posts/2015-08-09-whats-a-fab-lab.html</guid>
  <pubDate>Sun, 09 Aug 2015 00:00:00 GMT</pubDate>
  <media:content url="https://decorator-proficiencies-75861.netlify.app/static/images/2015/08/2014-08-02-01.47.45.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Mission moment: Mark Hammond, PSF Distinguished Service Award Recipient</title>
  <dc:creator>Carol Willing</dc:creator>
  <link>https://decorator-proficiencies-75861.netlify.app/blog/posts/2015-06-09-mission-moment-hammond.html</link>
  <description><![CDATA[ 





Today, the Python Software Foundation, commonly known as PSF in the Python community, gave the PSF Distinguished Service Award to Mark Hammond. Brian Curtin, a past PSF Director and long-time communicator of “community” importance, wrote a thoughtful <a href="http://pyfound.blogspot.com/2015/06/mark-hammond-receives-distinguished.html" target="_blank">PSF blog post</a> about Mark’s many contributions to our Python community.
<p></p>
<blockquote class="blockquote">
The wonderful Python community also has itself to thank for allowing this book to come to fruition. The Python newsgroup seems to be one of the final bastions of Usenet where spams are ignored, newbies are treated kindly, and trolls are either ignored or quickly turned into a serious and on-topic discussion. Many smart and friendly people hang out on the newsgroup, and it’s one of the more esoteric reasons many people find using the language enjoyable.
</blockquote>
<p><em>Source: Mark Hammond and Andy Robinson, Python Programming on Win32, O’Reilly &amp; Associates, Inc., 2000.</em></p>
<p>Mark and Andy shared this quote in the Acknowledgements section of their co-authored book on Python and Windows. Fifteen years later, their words about the Python community still ring true. Personally, I value the many thoughtful and friendly community members that contribute to the Python language and ecosystem. I agree that the “smart and friendly people” of the Python community are one of the key reasons I “find using the language enjoyable”.</p>
<p>Mark and his contributions serve the Python language and community. Mark, congratulations on your award, and thank you!</p>
<blockquote class="blockquote">
The <a href="https://www.python.org/psf/mission/" target="_blank">mission of the Python Software Foundation</a> is to promote, protect, and advance the Python programming language, and to support and facilitate the growth of a diverse and international community of Python programmers.
</blockquote>
<p><em>Source: Python.org website.</em></p>



<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a> ]]></description>
  <category>tech</category>
  <guid>https://decorator-proficiencies-75861.netlify.app/blog/posts/2015-06-09-mission-moment-hammond.html</guid>
  <pubDate>Tue, 09 Jun 2015 00:00:00 GMT</pubDate>
  <media:content url="https://decorator-proficiencies-75861.netlify.app/static/images/2019/notebook-38.png" medium="image" type="image/png"/>
</item>
<item>
  <title>Change, community, and compassion</title>
  <dc:creator>Carol Willing</dc:creator>
  <link>https://decorator-proficiencies-75861.netlify.app/blog/posts/2015-08-04-change-community-compassion.html</link>
  <description><![CDATA[ 





<p>Today, I reflect on a life changing event. For a few days, we came together from around the world to form a community to share our thoughts on change and our compassion for individual experiences in technology. <!-- more --> I’m sharing a very rough draft of a letter that I wrote on May 29, 2014. I hope you will find a nugget of wisdom, inspiration, or comfort in these jumbled, unedited yet heartfelt words. I am so grateful for <a href="https://adacamp.org/" target="_blank">AdaCamp</a>&nbsp;San Francisco 2013 and its encouragement.</p>
<p>Change, community, and compassion matter. Peace.</p>
<blockquote class="blockquote">
<p><strong>Unedited text of a draft letter from May 29, 2014</strong></p>
</blockquote>
<blockquote class="blockquote">
<p>It’s been almost one year since I experienced AdaCamp San Francisco.</p>
</blockquote>
<blockquote class="blockquote">
<p>Since AdaCamp, I:</p>
</blockquote>
<blockquote class="blockquote">
<ul>
<li>attended 9 conferences in open source/computing.</li>
<li>encouraged more female speakers in my local business and tech community.</li>
<li>co-organize PyLadies in my local city and have strived to build a friendly helpful partnerships with our Python and Javascript and entrepreneurship communities.</li>
<li>Submitted my first contribution to an open source project (thanks to the GNOME Outreach Program for Women’s encouragement)</li>
<li>Made over 100 commits to open source projects over the past year.</li>
<li>Served on the PyCon program committee and PyCon poster presenter.</li>
<li>I’ve taught and encouraged others – k12 students, undergrad, grad students to men and women reentering the workforce or making a career change.</li>
</ul>
</blockquote>
<blockquote class="blockquote">
<p>I did none of these things because I was “paid” to do so. I did these things because they were important to me and my desire to work in a tech community that embraces the value of people above hardware and software. Community means more than a box of parts and bits flying across a network.</p>
</blockquote>
<blockquote class="blockquote">
<p>One size doesn’t fit all. We are individuals – each with our own unique pasts, life stories, and aspirations.</p>
</blockquote>
<blockquote class="blockquote">
<hr>
</blockquote>
<blockquote class="blockquote">
<p>What was AdaCamp’s role in my past year? Informative. Encouraging. Most honestly, AdaCamp was life changing.</p>
</blockquote>
<blockquote class="blockquote">
<p>AdaCamp</p>
</blockquote>
<blockquote class="blockquote">
<p>Listened</p>
</blockquote>
<blockquote class="blockquote">
<p>Responded thoughtfully</p>
</blockquote>
<blockquote class="blockquote">
<p>Planned – I have never been to a professional event that was more thoughtful about food/meal planning, accessibility of facilities, quiet areas, community information (medical and crisis).</p>
</blockquote>
<blockquote class="blockquote">
<p>Strived to be thoughtful. Inclusive.</p>
</blockquote>
<blockquote class="blockquote">
<p>AdaCamp’s impact beyond just the two official days. Genuine women and allies at Community Leadership Summit, OSCON, LinuxCon, OpenHardware Summit, Grace Hopper, SCALE12x, PyCon, and more.</p>
</blockquote>
<blockquote class="blockquote">
<p>For many years, I tried to participate in open source but couldn’t muster the confidence to do so. I would gain the confidence and then be discouraged by the unclear instructions to contribute. Ultimately, it was easier to work on other non-profits where I could make a stronger impact.</p>
</blockquote>
<blockquote class="blockquote">
<p>Yet, software development is something I love doing. I enjoy the puzzle of putting together solutions to problems.</p>
</blockquote>
<blockquote class="blockquote">
<p>GNOME Outreach for Women Program – to make a “real” contribution to an open source project. Documentation for another project. It took me several months past that to realize that documentation was a “real” contribution in fact it’s a big part of how the community communicates to users and developers.</p>
</blockquote>
<blockquote class="blockquote">
<hr>
</blockquote>
<blockquote class="blockquote">
<p>Safe space. Thoughtful communication. Safe space.</p>
</blockquote>
<blockquote class="blockquote">
<p>It’s where I thrive and I’m committed to keeping My neighborhood safe for learning, building, and sharing openly.</p>
</blockquote>
<blockquote class="blockquote">
<p>It matters and changes the world one person at a time. Does it have to be slow if one person at a time? I don’t think so. Call it exponential growth or viral but I’m hoping to seeing a big improvement in numbers and diversity before my children graduate from college six years from now.</p>
</blockquote>
<blockquote class="blockquote">
<p>Giving back through PyLadies and other local outreach efforts.</p>
</blockquote>
<blockquote class="blockquote">
<p>Striving to be part of the solution. It’s about people – individuals.</p>
</blockquote>
<blockquote class="blockquote">
<p>Gentle, thoughtful has a place in technology and business. It’s not orthogonal to good business but instead an essential element of creating and delivering meaningful offerings to others in our diverse, complicated world.</p>
</blockquote>
<blockquote class="blockquote">
<hr>
</blockquote>
<p><strong>Listen, collaborate, and respond to the people that seem different than you.</strong></p>



<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a> ]]></description>
  <category>tech</category>
  <guid>https://decorator-proficiencies-75861.netlify.app/blog/posts/2015-08-04-change-community-compassion.html</guid>
  <pubDate>Tue, 09 Jun 2015 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Play it again pyvideo.org!</title>
  <dc:creator>Carol Willing</dc:creator>
  <link>https://decorator-proficiencies-75861.netlify.app/blog/posts/2015-06-03-play-it-again-pyvideo-org.html</link>
  <description><![CDATA[ 





<p>Yesterday, the <a href="https://www.python.org/psf/">Python Software Foundation</a> posted <a href="http://pyfound.blogspot.com/2015/06/congratualations-to-new-board-of.html">results of the election</a> for the Board of Directors 2015-2016 term. Thank you to the many individuals that participated and helped with the election. <!-- more --> I want take a moment and give special thanks to the 2014-2015 PSF Board for their service and accomplishments.</p>
<p>To the retiring PSF Board members, I love programming in Python, learning from others, and sharing <a href="http://pyvideo.org/" target="_blank">pyvideo.org</a> talks. To honor the goodness that each of you bring to the Python community, I would like to highlight some of your pyvideo.org talks and celebrate your contributions to Python and our community. Thank you!</p>
<p><strong>Brian Curtin</strong> <a href="http://pyvideo.org/video/1791/what-is-the-python-software-foundation">What is the Python Software Foundation</a> <a href="http://pyvideo.org/video/432/pycon-2011--the-development-of-python-and-you">The Development of Python and You</a></p>
<p><strong>Kushal Das</strong> <a href="http://pyvideo.org/video/2596/teaching-python-to-infinity-and-beyond">Teaching Python: To Infinity and Beyond</a> <a href="http://pyvideo.org/video/1831/darkserver-help-to-debug-userspace">Darkserver: Help to Debug Userspace</a></p>
<p><strong>David Mertz</strong> <a href="http://pyvideo.org/video/1704/why-you-should-use-python-3-for-text-processing">Why You Should Use Python 3 for Text Processing</a> <a href="http://pyvideo.org/video/668/coroutines-event-loops-and-the-history-of-pytho">Coroutines, Event Loops and the History of Python Generators</a></p>
<p><strong>Travis Oliphant</strong> <a href="http://pyvideo.org/video/3059/building-the-pydata-community">Building the PyData Community</a> <a href="http://pyvideo.org/video/960/python-in-big-data-with-an-overview-of-numpy-sc">Python in Big Data with and Overview of NumPy and SciPy</a></p>
<p><strong>Selena Deckelman</strong> <a href="http://pyvideo.org/video/1697/what-teachers-really-need-from-us">What Teachers Really Need From Us</a> <a href="http://pyvideo.org/video/2694/the-python-pipeline-why-you-should-reach-out-to">The Python Pipeline: Why You Should Reach Out to Local Teachers</a></p>
<p><strong>Jessica McKellar</strong> <a href="http://pyvideo.org/video/2375/the-future-of-python-a-choose-your-own-adventur">The Future of Python: A Choose Your Own Adventure</a> <a href="http://pyvideo.org/video/719/diversity-in-practice-how-the-boston-python-user">Diversity in Practice: How the Boston Python User Group grew to 1700 people and over 15% women</a></p>



<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a> ]]></description>
  <category>tech</category>
  <guid>https://decorator-proficiencies-75861.netlify.app/blog/posts/2015-06-03-play-it-again-pyvideo-org.html</guid>
  <pubDate>Wed, 03 Jun 2015 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Mentors, music, and motivation</title>
  <dc:creator>Carol Willing</dc:creator>
  <link>https://decorator-proficiencies-75861.netlify.app/blog/posts/2015-03-18-mentor-music-and-motivation.html</link>
  <description><![CDATA[ 





<p>As I get ready to attend the <a href="http://www.writespeakcode.com/">Write/Speak/Code</a> conference, I’m doing more reflecting on the past few months than packing for the trip. While I would like to leave San Diego with warm enough clothes for New York City, I want to write a few brief thoughts about learning from others. <!-- more --> Learning from others is one of the things that I love most about software development. While I enjoy my time quietly working through code on my own, I value the time that I spend collaborating with other developers. When I was a child, black rotary phones were popular, libraries were a great place to do research and pore through musty books, and mailboxes were quaint boxes that held paper envelopes, postcards, and the annual Sears catalog.</p>
<p>While the technology has changed and evolved over the years, interactions with people have remained important through all of the changes. Communicating my ideas and listening to the ideas of others have been critical skills for me for as long as I can remember. I believe communicating and listening are key to solving problems that impact another individual’s life or a community.</p>
<p>As a music lover and amateur band member, I enjoy playing with musicians that are better than me and sharing my limited skill with those that ask for my assistance. One thing that I know is that there is and will always be more music that I enjoy than I will ever be able to play or master. I appreciate the time and effort that other musicians put into their craft.</p>
<p>Like in music, I search out other software developers in my quest to learn a new skill or find a perspective that is different than my own. Whether informally coding at a study group, having a recent grad teach me how to use an app on my phone more effectively, emailing a Python creator, or pair programming at PyTn, I find that most individuals have something very valuable to offer to a new or experienced developer. I’m very thankful that these people choose to share their unique talents. I’m also humbled by their knowledge and motivated to share my own perspective at Write/Speak/Code. Selfishly, I can’t wait to hear the thoughts of the attendees at Write/Speak/Code and their creative ideas too.</p>
<p>A special thanks to <a href="http://mitsloan.mit.edu/faculty/detail.php?in_spseqno=41395">Professor JoAnne Yates</a> for teaching me the importance of communicating well with others.</p>



<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a> ]]></description>
  <category>tech</category>
  <guid>https://decorator-proficiencies-75861.netlify.app/blog/posts/2015-03-18-mentor-music-and-motivation.html</guid>
  <pubDate>Wed, 18 Mar 2015 00:00:00 GMT</pubDate>
</item>
</channel>
</rss>
