<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.2.2">Jekyll</generator><link href="https://rasch.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://rasch.io/" rel="alternate" type="text/html" /><updated>2026-05-07T13:10:56+00:00</updated><id>https://rasch.io/feed.xml</id><title type="html">David Rasch</title><subtitle>Something I wrote</subtitle><author><name>David Rasch</name><email>rasch@raschnet.com</email></author><entry><title type="html">Desync Bugs Always Catch My Eye</title><link href="https://rasch.io/2026/04/29/desync-bugs.html" rel="alternate" type="text/html" title="Desync Bugs Always Catch My Eye" /><published>2026-04-29T16:00:00+00:00</published><updated>2026-04-29T16:00:00+00:00</updated><id>https://rasch.io/2026/04/29/desync-bugs</id><content type="html" xml:base="https://rasch.io/2026/04/29/desync-bugs.html"><![CDATA[<p>Reading about <a href="https://www.agwa.name/blog/post/fastcgi_is_the_better_protocol_for_reverse_proxies">why FastCGI is a better protocol for reverse proxies</a> today pulled me back down this rabbit hole. The argument is that HTTP/1.1 has no explicit message boundaries — the message describes where it ends, with multiple ambiguous methods, so proxies and backends can disagree about where one request stops and the next begins. FastCGI (and HTTP/2) solved this with explicit framing. HTTP/1.1 didn’t, and we’re still living with the consequences.</p>

<p>That got me thinking about the other flavors of this problem I’ve hit over the years. Desync bugs are interesting precisely because they’re not one pattern — they’re a category. Protocol ambiguity, timeout handling, connection reuse: the mechanism varies, but the result is the same: you asked for A and got B, and everything <em>looked</em> fine.</p>

<p>I first ran into this back in 2008 with <a href="/misc/2008/01/30/mogilefs-and-race-condition.html">MogileFS and a race condition</a>. A slow database caused an <code class="language-plaintext highlighter-rouge">fread</code> to time out waiting for a response. The client treated it as “not found” and moved on — but the TCP buffer still held the original response. The next request read that stale data instead of its own response. We were asking for item A and getting item B. The fix was simple once diagnosed: close the connection on any timeout rather than reuse it.</p>

<p>At Reverbnation I ran into it again — twice. The <a href="https://repo.or.cz/ruby-mogilefs-client.git/tag/8cc345789494c9017ab6eb7d52945f35748e3929">MogileFS Ruby client</a> had a similar connection safety issue. We ended up streaming (and caching in CDN) the wrong song. And separately, Dalli (the Memcache client) had its own desync problem (can’t find a link to this one), but there’s a recent one with a similar thread — <a href="https://github.com/petergoldstein/dalli/issues/956">issue #956</a> — where response data could bleed across requests with timeouts.</p>

<p>What makes these bugs so insidious:</p>

<ul>
  <li><strong>They’re timing-dependent.</strong> Single-threaded tests pass. Low-traffic staging passes. The bug lives in the gap between requests.</li>
  <li><strong>The symptom is far from the cause.</strong> You see garbled cache reads or wrong file data. The real problem is connection reuse logic written without thread-safety in mind.</li>
  <li><strong>They keep appearing.</strong> Connection pooling is hard to get right, and every client library that implements it is one concurrency mistake away from this class of bug.</li>
</ul>

<p>The <a href="https://tmctmt.com/posts/http-desync-in-discord/">HTTP desync bugs found in Discord’s infrastructure</a> show the same pattern at the HTTP layer — responses routed to the wrong client because something upstream got out of sync. Different protocol, similar critical section.</p>

<p>I don’t expect these to stop appearing. Any time you have pooled connections and concurrent access, the conditions are there. The next one is probably in a library I’m using right now.</p>

<p>The other interesting part about these types of bugs, is that the code one writes to send a request and receive a response seems trivial, and this type of issue can hide in a library for a long time before it’s unearthed.</p>

<p>The framing problem shows up outside of HTTP too. <a href="https://samizdat.dev/phantom-patch/">This post on phantom patches</a> describes GNU <code class="language-plaintext highlighter-rouge">patch</code> being unable to distinguish actual diff content from diff-shaped text embedded in a commit message — same underlying idea, completely different domain. When the format doesn’t have unambiguous boundaries, parsers disagree, and something gets applied that shouldn’t.</p>]]></content><author><name>David Rasch</name><email>rasch@raschnet.com</email></author><category term="backend," /><category term="bugs," /><category term="debugging" /><summary type="html"><![CDATA[Reading about why FastCGI is a better protocol for reverse proxies today pulled me back down this rabbit hole. The argument is that HTTP/1.1 has no explicit message boundaries — the message describes where it ends, with multiple ambiguous methods, so proxies and backends can disagree about where one request stops and the next begins. FastCGI (and HTTP/2) solved this with explicit framing. HTTP/1.1 didn’t, and we’re still living with the consequences.]]></summary></entry><entry><title type="html">Problems aren’t just for Managers</title><link href="https://rasch.io/2025/08/15/problems-arent-just-for-managers.html" rel="alternate" type="text/html" title="Problems aren’t just for Managers" /><published>2025-08-15T21:33:00+00:00</published><updated>2025-08-15T21:33:00+00:00</updated><id>https://rasch.io/2025/08/15/problems-arent-just-for-managers</id><content type="html" xml:base="https://rasch.io/2025/08/15/problems-arent-just-for-managers.html"><![CDATA[<h1 id="problems-arent-just-for-managers">Problems aren’t just for Managers</h1>
<p><strong>Problem over Person</strong>
`
In a team meeting, one of my leaders was struggling with their scrum master. Their engineers keep telling them about boring standups and no improvement.</p>

<p>I asked one of my annoying questions,</p>

<blockquote>
  <p><em>Me:</em> “what would you like to do about it?”</p>

  <p><em>EM (Engineering Manager):</em> “Discuss with the group about how I can give the scrum master feedback.”</p>

  <p><em>Me:</em> “Why are they coming to you?”</p>

  <p><em>EM:</em> “They talked about it with the team, but nothing has changed.”</p>

  <p><em>Me:</em> “What does that mean?”</p>

  <p><em>EM:</em> “The engineers all feel this way.”</p>

  <p><em>Me:</em> “Has this come up at a retro?”</p>

  <p><em>EM:</em> “well,they don’t feel comfortable talking about it with the scrum master in the room.”</p>

  <p><em>Me:</em> “why not?”</p>

  <p><em>EM:</em> “You need a manager to give feedback to the scrum master”</p>
</blockquote>

<hr />

<p>Through the questions, we discovered a string of assumptions and fell in to a trap.</p>

<p>Some potential beliefs that got us here:</p>
<ol>
  <li>this feedback is about the person</li>
  <li>the team can’t bring up hard things at a retro</li>
  <li>the team needs their manager to step in</li>
  <li>it’s unsafe to talk at a retro</li>
  <li>this problem is someone’s fault</li>
</ol>

<p>Any of these MAY be true, but outside of misconduct we can often step up to the problem and work it just like we might a bug.</p>

<ol>
  <li>this issue affects the whole team</li>
  <li>the manager knows the least about this issue of anyone</li>
  <li>the manager can do more harm than good circling around the edges</li>
  <li>what ever happened to “continuous improvement?”</li>
</ol>

<p>We can build the communication and influence skill to help this engineer share the problem with the team at a retro, almost like it’s a bug report.</p>

<p>How can the team flex their continuous improvement muscle and own this issue and its solution? How do we, as a leader, engage build the skills so our engineer can describe the problem in a way their team will understand and rally around it?</p>

<p>Practice makes perfect.</p>

<p>Some example framings of this problem:</p>

<ol>
  <li>“I have trouble staying engaged during our team meetings because they take a long time”</li>
  <li>“our standups are too long”</li>
  <li>“what can we do to help our standups keep to the timebox?”</li>
  <li>“I notice that lots of folks aren’t paying attention during standup, because I get questions later that were answered there”</li>
  <li>“no conversation occurs during standup other than just going around the room, I don’t understand how that helps us”</li>
</ol>

<p>You might hate these and that’s okay. Communication is contextual and you know your voice and how to frame the real issue. (NB: AI can help brainstorm here, but the engineer needs to own the tone and keep it short and sweet; I’ve seen lot of disconnects/hard feelings because folks tried to use AI to help them express an issue only to find out some nuance and values got lost).</p>

<p>You’ll notice some of the examples above are harsher than others, but none are ABOUT another person’s shortcoming. They’re about the symptoms and the problem.</p>

<p>Leaders help engineers prepare to engage in their own discussion or retro WITHOUT a manager. This would be a great time for leader and engineer to use role play and help them practice both expressing the issue and responding to inevitable follow-up questions and challenges.</p>

<p>Once the problem is on the table, the whole team can help own the issue. They have created the situation they’re in together depending on how long they’ve been quiet or even gone through the motions like zombies every day for months without saying anything. The objective is to break the seal and get the issue on the table for discussion.</p>

<p>As leaders, we need to be on the lookout for what behavior and core skills are needed before we jump in to the rescue. Stepping back and letting the team engage CAN lead to more conflict, but over time they’ll build their muscle at working through their own issues rather than calling on outsiders to rescue them. Leaders hope for an interesting organizational problem or performance issue – ESPECIALLY on another team because we can BLAME someone.</p>

<p>As a leader, when did you swoop in to solve an issue when you needed to find a dfferent stance? 
Other resources for further reading:</p>
<ol>
  <li><a href="https://en.wikipedia.org/wiki/The_Five_Dysfunctions_of_a_Team">5 dysfunctions of a team</a></li>
  <li><a href="https://en.wikipedia.org/wiki/Five_whys">5 whys</a></li>
  <li><a href="https://www.atlassian.com/team-playbook/plays/retrospective">Effective Retrospectives</a></li>
  <li><a href="https://agilecoachinggrowthwheel.org/guiding-learning/">Agile Coaching Growth Wheel - Guided Learning</a></li>
</ol>

<!--
Other ideas:

1. Identify the issue - state it as sucinctly as possible
2. Describe the impact on YOU - Start with "I ..." 
3. Talk about what you DO want - Think about your values and what you care about
4. Stick to facts (real facts), not opinions or solutions
5. Stop - wait

Things to avoid (most of these are folks jumping to solution):
1. Moving to solutions too quickly
2. Stick to the problem, not solution
2. How it was done at another job
3. What a book said you should do


1. 5. Limit your fallacies - how it was done at another job, what the scrum guide says, what you read in a book

-->]]></content><author><name>David Rasch</name><email>rasch@raschnet.com</email></author><category term="feedback," /><category term="tech," /><category term="agile," /><category term="leadership" /><summary type="html"><![CDATA[Problems aren’t just for Managers Problem over Person ` In a team meeting, one of my leaders was struggling with their scrum master. Their engineers keep telling them about boring standups and no improvement.]]></summary></entry><entry><title type="html">Distributing Pi</title><link href="https://rasch.io/hardware/2021/02/09/distributing-pi.html" rel="alternate" type="text/html" title="Distributing Pi" /><published>2021-02-09T16:49:00+00:00</published><updated>2021-02-09T16:49:00+00:00</updated><id>https://rasch.io/hardware/2021/02/09/distributing-pi</id><content type="html" xml:base="https://rasch.io/hardware/2021/02/09/distributing-pi.html"><![CDATA[<p>Today I spent a bunch of time trying to figure out how to manage a remote set of raspberry pi’s deployed to help the product we’re working on.</p>

<p>I was thinking of using a home-grown system to do this, but upon searching, and some pings from some experts, it became clear there’s a lot of prior art here. Some of the options are pretty expensive, but others aren’t.</p>

<p>Some of the needs of our platform in general. Some of which could be addressed by these platforms:</p>
<ol>
  <li>OTA firmware updates</li>
  <li>Protection from failed updates</li>
  <li>Builds and distribution of said updates</li>
  <li>Builds for Raspberry Pi</li>
  <li>ideally, some sort of wifi setup framework</li>
  <li>Data collection</li>
  <li>Debug/development access to systems</li>
</ol>

<h2 id="seeds-of-my-search">Seeds of my search</h2>
<ul>
  <li><a href="https://particle.io">Particle</a></li>
  <li><a href="https://www.balena.io/">Balena</a></li>
</ul>

<h2 id="second-set">Second set</h2>
<ul>
  <li><a href="https://mender.io/plans/features">Mender</a> - community/freeish options. Lots of setup required
    <ul>
      <li><a href="https://docs.mender.io/2.6/server-installation/overview">https://docs.mender.io/2.6/server-installation/overview</a></li>
      <li><a href="https://hub.mender.io/t/raspberry-pi-4-model-b/889">https://hub.mender.io/t/raspberry-pi-4-model-b/889</a></li>
      <li><a href="https://github.com/mendersoftware/mender">https://github.com/mendersoftware/mender</a></li>
    </ul>
  </li>
  <li><a href="https://www.yoctoproject.org/">Yocto</a> - related or integrated with Mender</li>
  <li><a href="https://rauc.io/">Rauc</a></li>
  <li><a href="https://www.upswift.io/pricing#pro">Upswift</a></li>
  <li><a href="https://www.eclipse.org/hawkbit/">Hawkbit</a></li>
  <li><a href="https://github.com/sbabic/swupdate">swupdated</a></li>
  <li><a href="https://github.com/ostreedev/ostree">libostree</a> - <a href="https://ostreedev.github.io/ostree/">Docs</a></li>
</ul>

<p>Another distro we could use other than traditional Debian based Raspberry Pi OS <a href="http://tinycorelinux.net/faq.html">http://tinycorelinux.net/faq.html</a></p>]]></content><author><name>David Rasch</name><email>rasch@raschnet.com</email></author><category term="hardware" /><category term="pi," /><category term="distribution," /><category term="updates," /><category term="firmware," /><summary type="html"><![CDATA[Today I spent a bunch of time trying to figure out how to manage a remote set of raspberry pi’s deployed to help the product we’re working on.]]></summary></entry><entry><title type="html">Router/Firewall and Replacing Edgerouter-X</title><link href="https://rasch.io/infrastructure/2021/02/08/firewall-and-distros.html" rel="alternate" type="text/html" title="Router/Firewall and Replacing Edgerouter-X" /><published>2021-02-08T20:35:00+00:00</published><updated>2021-02-08T20:35:00+00:00</updated><id>https://rasch.io/infrastructure/2021/02/08/firewall-and-distros</id><content type="html" xml:base="https://rasch.io/infrastructure/2021/02/08/firewall-and-distros.html"><![CDATA[<h2 id="hardware">Hardware</h2>
<ul>
  <li>ProtectLi</li>
</ul>

<h2 id="distros-or-raw-bsd">Distros? or raw BSD?</h2>
<ul>
  <li>PFSense, OPNSense, Untangled</li>
</ul>

<h2 id="bsd-host-with-other-guests">BSD Host with other guests?</h2>

<p>Goals:</p>
<ol>
  <li>Full Gig speed</li>
  <li>Firewall and port forwarding with hairpin</li>
  <li>IPv6 with firewall setup</li>
  <li>Be able to configure DNSMasq sanely.
    <ol>
      <li>Easy to configure static dhcp and corresponding DNS hosts</li>
      <li>Easy to configure DNS names</li>
    </ol>
  </li>
  <li>Easy to set up arbitrary VPNs</li>
  <li>Maybe run arbitrary VM/Containers for other infra services like: Pihole,</li>
</ol>

<h2 id="what-if-i-want-to-run-vms">What if I want to run VMs?</h2>
<p>One could just run VMs using virtualization on the respective BSD distro above. Using: <a href="https://github.com/churchers/vm-bhyve">https://github.com/churchers/vm-bhyve</a>. Tried this and was able to start a VM pretty easily.</p>

<p>Other options include more virutalization web management frameworks on top of KVM and/or Xen nee Citrix</p>
<ul>
  <li><a href="https://www.proxmox.com/en/">Proxmox</a></li>
  <li><a href="https://xcp-ng.org/">XCP-NG</a></li>
</ul>]]></content><author><name>David Rasch</name><email>rasch@raschnet.com</email></author><category term="infrastructure" /><category term="anki," /><category term="flash" /><category term="cards," /><category term="remember," /><category term="memorize," /><category term="learning," /><category term="organization" /><summary type="html"><![CDATA[Hardware ProtectLi]]></summary></entry><entry><title type="html">Using Anki</title><link href="https://rasch.io/organization/2021/02/07/using-anki.html" rel="alternate" type="text/html" title="Using Anki" /><published>2021-02-07T01:49:00+00:00</published><updated>2021-02-07T01:49:00+00:00</updated><id>https://rasch.io/organization/2021/02/07/using-anki</id><content type="html" xml:base="https://rasch.io/organization/2021/02/07/using-anki.html"><![CDATA[<p>I love being able to find things, and remember them. As I get more gray hair, I feel I need to both a) work harder to get things into my head and b) there’s great value to being able to channel salient bits from things I’ve read.</p>

<p>Some links to other folks working on this Exobrain, or cataloging everything they know:</p>
<ul>
  <li><a href="https://wiki.nikitavoloboev.xyz/anki">Everything I know</a></li>
  <li><a href="https://github.com/pjf/exobrain">Github pjf/expbrain</a></li>
  <li><a href="https://en.wikipedia.org/wiki/Exobrain">Wikipedia - Exobrain</a></li>
  <li><a href="https://beepb00p.xyz/exobrain/">Beepb00p - tried to quantify, archive, and cross-reference their life</a></li>
  <li><a href="https://github.com/ashlinchak/mdanki">MDAnki</a> - Markdown to Anki</li>
</ul>

<h2 id="learning">Learning</h2>
<ul>
  <li><a href="https://apps.ankiweb.net/">Anki</a> - for spaced repitition to facillitate quick learning</li>
</ul>]]></content><author><name>David Rasch</name><email>rasch@raschnet.com</email></author><category term="organization" /><category term="anki," /><category term="flash" /><category term="cards," /><category term="remember," /><category term="memorize," /><category term="learning," /><category term="organization" /><summary type="html"><![CDATA[I love being able to find things, and remember them. As I get more gray hair, I feel I need to both a) work harder to get things into my head and b) there’s great value to being able to channel salient bits from things I’ve read.]]></summary></entry><entry><title type="html">LinuxServer.io Docker Containers</title><link href="https://rasch.io/2021/02/05/containers.html" rel="alternate" type="text/html" title="LinuxServer.io Docker Containers" /><published>2021-02-05T16:22:00+00:00</published><updated>2021-02-05T16:22:00+00:00</updated><id>https://rasch.io/2021/02/05/containers</id><content type="html" xml:base="https://rasch.io/2021/02/05/containers.html"><![CDATA[<p>I often find it interesting to discover the accidental clusters or catalogs. Realistically these are curated, edited, or communities that pop up. A good example of this is <em>LinuxServer.io</em> <a href="https://linuxserver.io">Linuxserver.io</a></p>

<p><a href="https://hub.docker.com/u/linuxserver/">Catalog</a></p>

<p>Some of the containers pointed me to tools that I find fascinating:</p>
<ul>
  <li><a href="https://hub.docker.com/r/linuxserver/nextcloud/">https://hub.docker.com/r/linuxserver/nextcloud/</a></li>
  <li><a href="https://hub.docker.com/r/linuxserver/sqlitebrowser">https://hub.docker.com/r/linuxserver/sqlitebrowser</a> - Love this one, it sets up a full openbox window window manager, RDP server, and Guacamole (web-based client)</li>
  <li><a href="https://hub.docker.com/r/linuxserver/resilio-sync">https://hub.docker.com/r/linuxserver/resilio-sync</a></li>
  <li><a href="https://hub.docker.com/r/linuxserver/healthchecks">https://hub.docker.com/r/linuxserver/healthchecks</a> - Monitor cron-based tasks to make sure they run</li>
  <li><a href="https://gitlab.com/LazyLibrarian/LazyLibrarian">https://gitlab.com/LazyLibrarian/LazyLibrarian</a></li>
</ul>]]></content><author><name>David Rasch</name><email>rasch@raschnet.com</email></author><category term="containers," /><category term="docker," /><category term="linuxserver," /><category term="media," /><category term="sync," /><category term="guacamole," /><category term="nextcloud" /><summary type="html"><![CDATA[I often find it interesting to discover the accidental clusters or catalogs. Realistically these are curated, edited, or communities that pop up. A good example of this is LinuxServer.io Linuxserver.io]]></summary></entry><entry><title type="html">Random Links from Today</title><link href="https://rasch.io/2021/02/05/today.html" rel="alternate" type="text/html" title="Random Links from Today" /><published>2021-02-05T15:36:00+00:00</published><updated>2021-02-05T15:36:00+00:00</updated><id>https://rasch.io/2021/02/05/today</id><content type="html" xml:base="https://rasch.io/2021/02/05/today.html"><![CDATA[<ul>
  <li>A watch with an E-ink display <a href="https://www.crowdsupply.com/sqfmi/watchy">https://www.crowdsupply.com/sqfmi/watchy</a>
    <ul>
      <li>hackable</li>
      <li>esp-32 based</li>
    </ul>
  </li>
  <li>The resurgence of VPN’s: <a href="https://queue.acm.org/detail.cfm?id=3439745">Everything VPN is New Again</a></li>
  <li><a href="https://aroberge.blogspot.com/2021/02/pythons-tug-of-war-between-beginner.html">Python features user friendliness</a></li>
  <li><a href="https://www.justwatch.com/">Where to watch a movie on streaming services</a></li>
  <li>tmux / ohmytmux <a href="https://github.com/gpakosz/.tmux">Tmux configs</a></li>
  <li>grocy - home ERP <a href="https://grocy.info/">grocy</a></li>
  <li>ninite - build a custom installer with bundled applications and updates for windows <a href="https://ninite.com/">ninite</a></li>
  <li>free HD wallpapers <a href="https://unsplash.com/t/wallpapers">unsplash</a></li>
  <li>Kubernetes <a href="https://kinvolk.io/">Kinvolk - container-optimized linux and tools</a></li>
</ul>

<h2 id="agile-herd">Agile Herd</h2>
<ul>
  <li>Bob reviewed an OS slide
    <ul>
      <li>Coaching mindset</li>
      <li>Kaizen</li>
      <li>Where is the client today? how can you meet them where they are?</li>
    </ul>
  </li>
  <li>Leadership kills missing?</li>
</ul>]]></content><author><name>David Rasch</name><email>rasch@raschnet.com</email></author><category term="journal," /><category term="kubernetes," /><category term="eink," /><category term="watch," /><category term="vpn," /><category term="python," /><category term="movie," /><category term="tmux," /><category term="windows," /><category term="installer" /><summary type="html"><![CDATA[A watch with an E-ink display https://www.crowdsupply.com/sqfmi/watchy hackable esp-32 based The resurgence of VPN’s: Everything VPN is New Again Python features user friendliness Where to watch a movie on streaming services tmux / ohmytmux Tmux configs grocy - home ERP grocy ninite - build a custom installer with bundled applications and updates for windows ninite free HD wallpapers unsplash Kubernetes Kinvolk - container-optimized linux and tools]]></summary></entry><entry><title type="html">Ventoy - The Last USB stick you’ll need to create</title><link href="https://rasch.io/tools/2020/10/27/ventoy.html" rel="alternate" type="text/html" title="Ventoy - The Last USB stick you’ll need to create" /><published>2020-10-27T02:08:07+00:00</published><updated>2020-10-27T02:08:07+00:00</updated><id>https://rasch.io/tools/2020/10/27/ventoy</id><content type="html" xml:base="https://rasch.io/tools/2020/10/27/ventoy.html"><![CDATA[<p>I’ve lately been using <a href="https://www.ventoy.net/en/index.html">Ventoy</a> to host my ISOs on a USB stick. It’s worked great for both Windows, Linux, and even other options.</p>]]></content><author><name>David Rasch</name><email>rasch@raschnet.com</email></author><category term="tools" /><category term="usb" /><category term="boot" /><category term="linux" /><category term="iso" /><category term="tools" /><category term="system" /><summary type="html"><![CDATA[I’ve lately been using Ventoy to host my ISOs on a USB stick. It’s worked great for both Windows, Linux, and even other options.]]></summary></entry><entry><title type="html">Climbing in the basement to replace lights</title><link href="https://rasch.io/2019/07/01/ceiling-climbing-basement.html" rel="alternate" type="text/html" title="Climbing in the basement to replace lights" /><published>2019-07-01T03:01:05+00:00</published><updated>2019-07-01T03:01:05+00:00</updated><id>https://rasch.io/2019/07/01/ceiling-climbing-basement</id><content type="html" xml:base="https://rasch.io/2019/07/01/ceiling-climbing-basement.html"><![CDATA[<p>Supplies:</p>
<ol>
  <li>Tree climbing kit</li>
  <li>Helmet</li>
  <li>Foot loop prusik</li>
  <li>Tape for securing lens secured with bowline on both ends</li>
  <li>screwdriver secured with bowline on both ends</li>
  <li>tool belt</li>
  <li>bulb</li>
  <li>place to put old bulb</li>
  <li>headlamp</li>
</ol>

<h2 id="knots-needed">Knots needed:</h2>
<ol>
  <li>knot on weight</li>
  <li>knot for pulling climbing rope with throw line</li>
  <li>knot around caribeaner for tie-in - anchor hitch</li>
  <li>figure 8 for backup and prevent pulling through</li>
  <li>friction loop through pulley</li>
  <li>valdotain tresse (4 wrap - 3 braid)</li>
  <li>prusik for foot loop</li>
  <li>figure 8 on a bite (used along the way up)</li>
</ol>

<h2 id="process">Process</h2>
<ol>
  <li>inspect equipment</li>
  <li>throw line (don’t forget to run through friction saver first)</li>
  <li>Pull up friction saver</li>
  <li>pull up real rope</li>
  <li>tie knots 3,4 on working end</li>
  <li>tie knots 6,7 on running end</li>
  <li>check all the knots, suit up, and start climbing</li>
  <li>pull on friction knots 6,7 to descend</li>
</ol>

<h2 id="if-you-forget-to-run-through-friction-saver-first">If you forget to run through friction saver first</h2>

<h2 id="ideas-for-next-time">Ideas for next time</h2>
<ol>
  <li>use second line once reaching the ceiling– will prevent spinning and have second point of security
2.</li>
</ol>

<h2 id="links">Links</h2>
<ol>
  <li><a href="https://www.fs.fed.us/treeclimbing/policy/guide/tree-climbing-field-guide-2005-edition.pdf">https://www.fs.fed.us/treeclimbing/policy/guide/tree-climbing-field-guide-2005-edition.pdf</a> <a href="https://treeworknow.com/pdf/tree-climbing-guide.pdf">https://treeworknow.com/pdf/tree-climbing-guide.pdf</a> <a href="/assets/tree-climbing-guide.pdf">local copy of guide from 2005</a></li>
  <li><a href="https://www.fs.usda.gov/treeclimbing/media/NationalTreeClimbingGuide2015April.pdf">https://www.fs.usda.gov/treeclimbing/media/NationalTreeClimbingGuide2015April.pdf</a></li>
</ol>]]></content><author><name>David Rasch</name><email>rasch@raschnet.com</email></author><summary type="html"><![CDATA[Supplies: Tree climbing kit Helmet Foot loop prusik Tape for securing lens secured with bowline on both ends screwdriver secured with bowline on both ends tool belt bulb place to put old bulb headlamp]]></summary></entry><entry><title type="html">Some notes on setting up my Dell XPS 13 9380 with Ubuntu Linux</title><link href="https://rasch.io/personal/2019/04/26/dell-xps-13-9380.html" rel="alternate" type="text/html" title="Some notes on setting up my Dell XPS 13 9380 with Ubuntu Linux" /><published>2019-04-26T00:00:00+00:00</published><updated>2019-04-26T00:00:00+00:00</updated><id>https://rasch.io/personal/2019/04/26/dell-xps-13-9380</id><content type="html" xml:base="https://rasch.io/personal/2019/04/26/dell-xps-13-9380.html"><![CDATA[<h2 id="issues">Issues</h2>
<h3 id="bluetooth-not-connecting-to-a2dp-devices-automatically-in-ubuntu-1804">Bluetooth not connecting to A2DP devices automatically in Ubuntu 18.04</h3>
<p>The Bluez library included in 18.04 has some issues reconnecting to Bluetooth devices (independent of the Dell XPS). Fix is to includ a PPA as described in <a href="https://askubuntu.com/questions/1040497/bluetooth-problem-ubuntu-18-04-lts">this article</a>.</p>

<h3 id="wifi-crashingmissing-every-other-suspendresume-also-prevents-sleep-workaround">Wifi crashing/missing every other suspend/resume (Also prevents sleep) <em>WORKAROUND</em></h3>
<p><em>Update:</em> apparently Dell/Canonical has implemented their own workaround for this in package <code class="language-plaintext highlighter-rouge">oem-workaround-bt-auto-resume-lp1774582</code></p>

<p><em>Update 2020-01-06:</em> This may have been fixed in mainline Ubuntu by an update to the <code class="language-plaintext highlighter-rouge">linux-firmware</code> package. <a href="https://bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1849779">https://bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1849779</a></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">tee</span> /lib/systemd/system-sleep/rfkill-bluetooth-workaround <span class="o">&lt;&lt;</span><span class="no">EOF</span><span class="sh">
#!/bin/sh
set -e

if [ "</span><span class="se">\$</span><span class="sh">{1}" = "pre" ]; then
    rfkill block bluetooth
elif [ "</span><span class="se">\$</span><span class="sh">{1}" = "post" ]; then
    rfkill unblock bluetooth
fi
</span><span class="no">EOF
</span><span class="nb">chmod </span>755 /lib/systemd/system-sleep/rfkill-bluetooth-workaround
</code></pre></div></div>

<p>for more information see this <a href="https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1799988?comments=all">bug</a></p>

<h3 id="s2-idle-sleep">S2 Idle Sleep</h3>
<p>This may be irrellevant with kernel update for 18.04 Bionic and 19.04 Disco
<a href="https://bugzilla.kernel.org/show_bug.cgi?id=199689">https://bugzilla.kernel.org/show_bug.cgi?id=199689</a></p>]]></content><author><name>David Rasch</name><email>rasch@raschnet.com</email></author><category term="Personal" /><summary type="html"><![CDATA[Issues Bluetooth not connecting to A2DP devices automatically in Ubuntu 18.04 The Bluez library included in 18.04 has some issues reconnecting to Bluetooth devices (independent of the Dell XPS). Fix is to includ a PPA as described in this article.]]></summary></entry></feed>