<?xml version="1.0" encoding="UTF-8"?><feed
	xmlns="http://www.w3.org/2005/Atom"
	xmlns:thr="http://purl.org/syndication/thread/1.0"
	xml:lang="en-US"
	>
	<title type="text">Snipe.Net</title>
	<subtitle type="text">Geeky, sweary things.</subtitle>

	<updated>2025-06-24T12:45:38Z</updated>

	<link rel="alternate" type="text/html" href="https://snipe.net/" />
	<id>https://snipe.net/feed/atom/</id>
	<link rel="self" type="application/atom+xml" href="http://snipe.net/feed/atom/?cat=-395" />

	<generator uri="https://wordpress.org/" version="6.9.4">WordPress</generator>
	<entry>
		<author>
			<name>snipe</name>
							<uri>https://snipe.net</uri>
						</author>

		<title type="html"><![CDATA[Welding, Failure, and Self-Sabotage]]></title>
		<link rel="alternate" type="text/html" href="https://snipe.net/2025/06/24/welding-failure-and-self-sabotage/" />

		<id>https://snipe.net/?p=6125</id>
		<updated>2025-06-24T12:45:38Z</updated>
		<published>2025-06-24T12:11:52Z</published>
		<category scheme="https://snipe.net/" term="Art" /><category scheme="https://snipe.net/" term="Misc" /><category scheme="https://snipe.net/" term="Security / Privacy" /><category scheme="https://snipe.net/" term="art" /><category scheme="https://snipe.net/" term="failure" /><category scheme="https://snipe.net/" term="infosec" /><category scheme="https://snipe.net/" term="life" /><category scheme="https://snipe.net/" term="welding" />
		<summary type="html"><![CDATA[<p>I have a friend here in Portugal who is very interested in getting into infosec. He currently works at a quiosque here in Portugal that we really like (and sometimes work from), and he happened to see my &#8220;hacking is not a crime&#8221; sticker on my laptop so decided to start asking questions. We chat [&#8230;]</p>
<p>The post <a href="https://snipe.net/2025/06/24/welding-failure-and-self-sabotage/">Welding, Failure, and Self-Sabotage</a> appeared first on <a href="https://snipe.net">Snipe.Net</a>.</p>
]]></summary>

					<content type="html" xml:base="https://snipe.net/2025/06/24/welding-failure-and-self-sabotage/"><![CDATA[
<p>I have a friend here in Portugal who is very interested in getting into infosec. He currently works at a quiosque here in Portugal that we really like (and sometimes work from), and he happened to see my &#8220;<a href="https://www.hackingisnotacrime.org">hacking is not a crime</a>&#8221; sticker on my laptop so decided to start asking questions. </p>



<p>We chat about certifications, different avenues in infosec, how they overlap, how to find what you really like within a very wide field of study, etc. Sometimes in person, sometimes over <a href="https://bsky.app/profile/snipe.lol">Bluesky</a>. </p>



<p>He said something to me this morning that made me realize I needed to write this down for other folks: he admitted that his fear of failing is holding him back. If he&#8217;s not perfect, he&#8217;s a failure as a person. </p>



<p>I ended up telling him a story that I didn&#8217;t think was that important, but after I typed it out, I realized it really is. (I promise, I&#8217;m not going to become a performance coach or some other bullshit. This just struck me and I wanted to write it down.)</p>



<h2 class="wp-block-heading">Story Time</h2>



<p>My sister and I both took blacksmithing and welding classes together, 20+ years ago, back when my skin looked great and my boobs were, well, where boobs are meant to be at that age. The blacksmithing classes were really fun (apart from the time I set myself on fire and barely noticed because it was summer in Arizona), but I really, really hated welding. Specifically MIG and TIG welding. Oxy-acetylene was fine. The MIG and TIG machines were inside this dark room (understandable, since it was in Arizona and really freaking hot). It was intimidating, but I&#8217;m pretty good at stuff, so sure. </p>



<p>If you&#8217;ve never welded before, they tell you to look at the &#8220;puddle&#8221; &#8211; the liquified metal you&#8217;re pushing around &#8211; and NOT the retina-scorching bright light that&#8217;s causing that metal to melt. Look at the puddle, watch the puddle, over and over and over they said that.</p>



<p>I just couldn&#8217;t <em>see</em>. All I could see was the light. We tried auto-darkening helmets, non-auto-darkening, lighter, darker, you name it. ALL I could see was the bright light that you&#8217;re very specifically NOT supposed to look at.</p>



<p>My first test weld, I welded the <em>table</em>, because I couldn&#8217;t even see that I wasn&#8217;t on the metal I was supposed to be welding. The guys in the class were laughing at me, and I felt so terrible. I knew I could be good at it somehow, but wtf I just <em>couldn&#8217;t</em> see what they saw. I couldn&#8217;t see the metal itself, so no, maybe I was just bad at this. Of all the things I&#8217;m good at, maybe this one just wasn&#8217;t for me. I couldn&#8217;t see the puddle, and I took that as a personal failure. </p>



<p>It was <em>awful</em>, and I made the decision that day that I&#8217;m terrible at welding, and therefore I hate welding. </p>



<p>Fast forward 20 years. I&#8217;m in my mid-forties, living in San Diego, and my sister runs a welding school in Yuma, Arizona. She&#8217;s a welder/artist, and I&#8217;m a computer dork. Not exactly the way we expected things to pan out when we were kids, but hey, whatever, it&#8217;s a living, and life is weird. </p>



<p>My sister&#8217;s <a href="https://weldlikeagirl.us">welding school</a> had a valentines day event that I decided to take Brady to. He had never done any blacksmithing or welding, so I thought it might be fun. Brady and I thrive when we&#8217;re challenged to solve problems together. It&#8217;s why we work so well together, in life and in our actual jobs.</p>



<p>The challenge was to create something that represents the moment you first fell in love with (or when you knew it was real, etc etc). Brady and I had made plans on what we wanted, but it was a timed event, so we realized 3/4 of the way through that we wouldn&#8217;t be able to make the thing we had designed within the time we had. It was a great idea, but we couldn&#8217;t complete it in time, so we had to pivot. That&#8217;s okay &#8211; we&#8217;re good at that!</p>



<p>We came up with a new idea, simpler than the original but we were running out of time. I wanted what we made to be <em>perfect</em>, because I wanted something we could both be proud of, but also because I wanted to impress my big sister. </p>



<p>So, new plan. We&#8217;ve only got an hour or so left at this point, and we came up with something really good. But it was going to require plasma cutting (fine), and&#8230; welding. Fuck. Not welding. I fucking hate welding. I&#8217;m going to absolutely blow this whole project and I&#8217;m going to embarrass my sister when everybody goes around the room and shows off their project and tells their story, and I have a hardened puddle of dogshit because I can&#8217;t weld. </p>



<p>My sister is a <em>very</em>, <em>very</em> good teacher. In general, but also specifically with me, and I don&#8217;t always handle failure gracefully. (Gifted child, etc.) </p>



<p>I was starting to get stressed out at this event that was supposed to be fun, because failure was looming and my final boss &#8211; <em>welding</em> &#8211; was one I knew would beat me. It did every single time, so why would today be different? </p>



<p>I started to get upset and flustered, and I re-explained to my sister that I can&#8217;t weld. I&#8217;m just not good at it, I can&#8217;t see the puddle!<strong> I CAN NOT DO IT. </strong></p>



<p>She very calmly said to me &#8220;No, those guys were wrong. You just need more light.&#8221; She then plopped down a portable lamp on the welding table to sidelight what I was working on and&#8230; holy shit. I can weld. I CAN weld. And friends, <em>I welded the ever living shit</em> out of that piece. </p>



<p><strong>I spent 20 years thinking I couldn&#8217;t do a thing</strong> because my teachers were shitty, when all I needed one small adjustment to make it possible. Just a bit of light. I thought I was a failure, that this was just one of those things I just wasn&#8217;t <em>meant</em> to be good at, when <strong>all I needed was a little more light</strong>.</p>



<p>This story is weird for me to tell because the analogy feels a bit too on the nose (&#8220;&#8216;light&#8217;, snipe? really?&#8221;), but it&#8217;s genuinely true. I realized how important it is as I was re-telling it to my new young friend here in Portugal who is feeling a little overwhelmed and is imposing his own pressure for perfection. </p>



<p>People much smarter and more sophisticated than me have been making this argument for centuries, and no one (other than a few jerks on <a href="https://github.com/grokability/snipe-it/">Github</a>) will ever be a harsher critic of me than I will be &#8211; but you cannot let that stop you. Fear is such an easy demon to rationalize into a dark corner where you never think about it again. &#8220;I&#8217;m just not good at $x&#8221;. What if you are though? What if a different approach is all you need? </p>



<p>It&#8217;s so incredibly easy to fall prey to self-sabotage &#8211; to give up before you even started, because <em>what if</em> you&#8217;re bad at it? And the worst part is that you won&#8217;t always even know you&#8217;re doing it. </p>



<p>You know what? You probably will be bad at it the first few times. So what? </p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img fetchpriority="high" decoding="async" width="474" height="266" src="https://snipe.net/wp-content/uploads/2025/06/jake-the-dog-sucking-is-the-first-step-to-being-good-at-something.gif" alt="" class="wp-image-6126"/></figure>
</div>


<p>Our piece isn&#8217;t going to win any awards, but I&#8217;m damn proud of it. We worked together, we pivoted, we made something that means something to us, and I learned for the very first time that I do not suck at welding. </p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="951" src="https://snipe.net/wp-content/uploads/2025/06/IMG_2022-1024x951.jpeg" alt="" class="wp-image-6127" srcset="https://snipe.net/wp-content/uploads/2025/06/IMG_2022-1024x951.jpeg 1024w, https://snipe.net/wp-content/uploads/2025/06/IMG_2022-300x279.jpeg 300w, https://snipe.net/wp-content/uploads/2025/06/IMG_2022-768x713.jpeg 768w, https://snipe.net/wp-content/uploads/2025/06/IMG_2022-1536x1426.jpeg 1536w, https://snipe.net/wp-content/uploads/2025/06/IMG_2022-2048x1901.jpeg 2048w, https://snipe.net/wp-content/uploads/2025/06/IMG_2022-1920x1782.jpeg 1920w, https://snipe.net/wp-content/uploads/2025/06/IMG_2022-720x668.jpeg 720w, https://snipe.net/wp-content/uploads/2025/06/IMG_2022-580x538.jpeg 580w, https://snipe.net/wp-content/uploads/2025/06/IMG_2022-320x297.jpeg 320w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>We were pretty crunched for time at that point. Whatever, I write code for a living. But I will cherish it until the day I die &#8211; and <em>apparently</em> I will tell this story to people who need a reminder that convincing yourself that you can&#8217;t do something is easy to do, and sometimes just a slightly different approach, a different perspective, and yes, some light (gag), can change everything. </p>



<p>We do this shit to ourselves all the time, and who knows what amazing shit we could have done if we hadn&#8217;t. Make a promise to yourself today that you&#8217;ll stop doing that &#8211; or at least try. Get out of your own way and just try the thing. And if you suck at it, so what? If you suck at it and like it, try a different approach. Make it a habit to get out of your own way.</p>



<p>It reminds me a bit of the book <a href="https://www.drawright.com"><em>Drawing on the Right Side of the Brain</em></a> by Betty Edwards. While conventional knowledge discounts the left/right brain arguments, her point was never to teach you how to draw, it was to teach you how to <em>see</em> &#8211; to prevent your brain from doing the overcorrections it normally does to help us perceive the world around us. It was life-changing for me. </p>



<p>If you&#8217;re ever in Yuma, Arizona, check out <a href="https://weldlikeagirl.us">Shanen&#8217;s welding school</a>. It&#8217;s pretty incredible. Or check out <a href="https://themoneymachine.tv">her TV show</a> (which you probably can&#8217;t find because the network is bad at their jobs.) At the very least, <a href="https://www.instagram.com/weld_like_a_girl/">check out her instagram</a> &#8211; it&#8217;s amazing (and I&#8217;m saying this as someone who hates Instagram.) And if you want to know more about our move to Portugal, check out <a href="https://snipe.pt">snipe.pt</a>.</p>
<p>The post <a href="https://snipe.net/2025/06/24/welding-failure-and-self-sabotage/">Welding, Failure, and Self-Sabotage</a> appeared first on <a href="https://snipe.net">Snipe.Net</a>.</p>
]]></content>
		
					<link rel="replies" type="text/html" href="https://snipe.net/2025/06/24/welding-failure-and-self-sabotage/#comments" thr:count="0" />
			<link rel="replies" type="application/atom+xml" href="https://snipe.net/2025/06/24/welding-failure-and-self-sabotage/feed/atom/" thr:count="0" />
			<thr:total>0</thr:total>
			</entry>
		<entry>
		<author>
			<name>snipe</name>
							<uri>https://snipe.net</uri>
						</author>

		<title type="html"><![CDATA[Portuguese Road Signs]]></title>
		<link rel="alternate" type="text/html" href="https://snipe.net/2023/11/24/portuguese-road-signs/" />

		<id>https://snipe.net/?p=6063</id>
		<updated>2023-11-25T06:54:49Z</updated>
		<published>2023-11-24T23:42:36Z</published>
		<category scheme="https://snipe.net/" term="Teh Funneh" /><category scheme="https://snipe.net/" term="portugal" /><category scheme="https://snipe.net/" term="signage" />
		<summary type="html"><![CDATA[<p>If you weren&#8217;t already aware, my husband and I moved to Portugal this year. You can learn more about that on our Portuguese blog &#8211; that one documents the logistics and emotions behind the journey, the pitfalls and the victories &#8211; but has a little less of my snark, since it&#8217;s meant to help people, [&#8230;]</p>
<p>The post <a href="https://snipe.net/2023/11/24/portuguese-road-signs/">Portuguese Road Signs</a> appeared first on <a href="https://snipe.net">Snipe.Net</a>.</p>
]]></summary>

					<content type="html" xml:base="https://snipe.net/2023/11/24/portuguese-road-signs/"><![CDATA[
<p>If you weren&#8217;t already aware, my husband and I moved to Portugal this year. You can learn more about that on <a href="https://snipe.pt" target="_blank" rel="noreferrer noopener"><strong>our Portuguese blog</strong></a> &#8211; that one documents the logistics and emotions behind the journey, the pitfalls and the victories &#8211; but has a little less of my snark, since it&#8217;s meant to help people, not necessarily make them laugh.</p>



<p>At any rate, one of the (many, many) things that terrifies me here is driving, especially where I live in Lisbon. The streets are impossibly narrow and twisty, often dead-ending or switching from a one-way in one direction to a one-way in the other direction without much (if any) warning. </p>



<p>BUT, eventually I&#8217;m probably going to have to drive here, so I figured I should probably know some (ideally <em>all</em>, really) of the road signs. Many of them are quite similar to the ones in the U.S., but some are hilariously hard to guess, and others just make me laugh. I thought I&#8217;d share a few of my favorites from <a href="https://www.rhinocarhire.com/Drive-Smart-Blog/Drive-Smart-Portugal/Portugal-Road-Signs.aspx" target="_blank" rel="noreferrer noopener">this super useful guide</a> here.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="280" height="250" src="https://snipe.net/wp-content/uploads/2023/11/Portugal-Warning-Sign-Warning-of-poor-visibility-due-to-rain-fog-or-snow.webp" alt="" class="wp-image-6088"/><figcaption class="wp-element-caption">Danger! Bees!</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="280" height="250" src="https://snipe.net/wp-content/uploads/2023/11/Portugal-Warning-Sign-Warning-for-pedestrians.webp" alt="" class="wp-image-6086"/><figcaption class="wp-element-caption">Look at this fucking belt! I am so cool</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="280" height="250" src="https://snipe.net/wp-content/uploads/2023/11/Portugal-Warning-Sign-Warning-for-loose-chippings-on-the-road-surface.webp" alt="" class="wp-image-6085"/><figcaption class="wp-element-caption">WARNING! Tiny aliens will attack your car with lasers</figcaption></figure>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="280" height="250" src="https://snipe.net/wp-content/uploads/2023/11/Portugal-Warning-Sign-Warning-for-falling-rocks.webp" alt="" class="wp-image-6084"/><figcaption class="wp-element-caption">Pizza ahead</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="280" height="250" src="https://snipe.net/wp-content/uploads/2023/11/Portugal-Warning-Sign-Warning-for-elderly.webp" alt="" class="wp-image-6083"/><figcaption class="wp-element-caption">Pervy old lady zone</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="280" height="250" src="https://snipe.net/wp-content/uploads/2023/11/Portugal-Warning-Sign-Warning-for-accidents.webp" alt="" class="wp-image-6082" style="width:193px;height:auto"/><figcaption class="wp-element-caption">Tesla-only zone</figcaption></figure>
</div>
</div>
</div></div>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="280" height="250" src="https://snipe.net/wp-content/uploads/2023/11/Portugal-Warning-Sign-Warning-for-a-speed-bump.webp" alt="" class="wp-image-6081"/><figcaption class="wp-element-caption">This dapper dude needs some googly eyes</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="280" height="250" src="https://snipe.net/wp-content/uploads/2023/11/Portugal-Warning-Sign-Warning-for-a-slippery-road-surface.webp" alt="" class="wp-image-6080"/><figcaption class="wp-element-caption">Snakes following the car!</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="280" height="250" src="https://snipe.net/wp-content/uploads/2023/11/Portugal-Warning-Sign-Warning-for-a-quayside-or-riverbank.webp" alt="" class="wp-image-6079"/><figcaption class="wp-element-caption">It&#8217;s called DRIVING, not diving</figcaption></figure>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="280" height="250" src="https://snipe.net/wp-content/uploads/2023/11/Portugal-Warning-Sign-Warning-for-a-curve-to-the-right.webp" alt="" class="wp-image-6077"/><figcaption class="wp-element-caption">Tee-hee!</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="280" height="250" src="https://snipe.net/wp-content/uploads/2023/11/Portugal-Warning-Sign-Warning-for-a-crossroad-with-a-side-road-on-the-left.webp" alt="" class="wp-image-6076"/><figcaption class="wp-element-caption">When your boner has a boner</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="280" height="250" src="https://snipe.net/wp-content/uploads/2023/11/Portugal-Warning-Sign-Warning-for-a-crossroad-side-roads-on-the-left-and-right.webp" alt="" class="wp-image-6075"/><figcaption class="wp-element-caption">Shark says HUG ME!!</figcaption></figure>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="280" height="250" src="https://snipe.net/wp-content/uploads/2023/11/Portugal-Warning-Sign-Warning-for-a-crossing-for-pedestrians.webp" alt="" class="wp-image-6074"/><figcaption class="wp-element-caption">The last Beatle crosses Abbey Road ahead</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="280" height="250" src="https://snipe.net/wp-content/uploads/2023/11/Portugal-Warning-Sign-Warning-for-a-bad-road-surface.webp" alt="" class="wp-image-6073"/><figcaption class="wp-element-caption">Strapless bras only</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="250" height="250" src="https://snipe.net/wp-content/uploads/2023/11/Portugal-Prohibitory-Sign-Vehicles-with-explosive-materials-prohibited.webp" alt="" class="wp-image-6072" srcset="https://snipe.net/wp-content/uploads/2023/11/Portugal-Prohibitory-Sign-Vehicles-with-explosive-materials-prohibited.webp 250w, https://snipe.net/wp-content/uploads/2023/11/Portugal-Prohibitory-Sign-Vehicles-with-explosive-materials-prohibited-150x150.webp 150w" sizes="auto, (max-width: 250px) 100vw, 250px" /><figcaption class="wp-element-caption">No, seriously, your car WILL explode</figcaption></figure>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="250" height="250" src="https://snipe.net/wp-content/uploads/2023/11/Portugal-Prohibitory-Sign-Handcarts-prohibited.webp" alt="" class="wp-image-6071" srcset="https://snipe.net/wp-content/uploads/2023/11/Portugal-Prohibitory-Sign-Handcarts-prohibited.webp 250w, https://snipe.net/wp-content/uploads/2023/11/Portugal-Prohibitory-Sign-Handcarts-prohibited-150x150.webp 150w" sizes="auto, (max-width: 250px) 100vw, 250px" /><figcaption class="wp-element-caption">Cross-fit zone</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="250" height="250" src="https://snipe.net/wp-content/uploads/2023/11/Portugal-Prohibitory-Sign-End-of-the-prohibition-to-use-the-horn.webp" alt="" class="wp-image-6070" srcset="https://snipe.net/wp-content/uploads/2023/11/Portugal-Prohibitory-Sign-End-of-the-prohibition-to-use-the-horn.webp 250w, https://snipe.net/wp-content/uploads/2023/11/Portugal-Prohibitory-Sign-End-of-the-prohibition-to-use-the-horn-150x150.webp 150w" sizes="auto, (max-width: 250px) 100vw, 250px" /><figcaption class="wp-element-caption">No ska zone</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="250" height="250" src="https://snipe.net/wp-content/uploads/2023/11/Portugal-Mandatory-Sign-Snow-chains-mandatory.webp" alt="" class="wp-image-6069" srcset="https://snipe.net/wp-content/uploads/2023/11/Portugal-Mandatory-Sign-Snow-chains-mandatory.webp 250w, https://snipe.net/wp-content/uploads/2023/11/Portugal-Mandatory-Sign-Snow-chains-mandatory-150x150.webp 150w" sizes="auto, (max-width: 250px) 100vw, 250px" /><figcaption class="wp-element-caption">Elysium ahead</figcaption></figure>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="250" height="250" src="https://snipe.net/wp-content/uploads/2023/11/Portugal-Mandatory-Sign-Mandatory-lights-off.webp" alt="" class="wp-image-6068" srcset="https://snipe.net/wp-content/uploads/2023/11/Portugal-Mandatory-Sign-Mandatory-lights-off.webp 250w, https://snipe.net/wp-content/uploads/2023/11/Portugal-Mandatory-Sign-Mandatory-lights-off-150x150.webp 150w" sizes="auto, (max-width: 250px) 100vw, 250px" /><figcaption class="wp-element-caption">No jellyfish allowed</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="250" height="250" src="https://snipe.net/wp-content/uploads/2023/11/Portugal-Mandatory-Sign-End-of-the-path-for-cattle.webp" alt="" class="wp-image-6067" srcset="https://snipe.net/wp-content/uploads/2023/11/Portugal-Mandatory-Sign-End-of-the-path-for-cattle.webp 250w, https://snipe.net/wp-content/uploads/2023/11/Portugal-Mandatory-Sign-End-of-the-path-for-cattle-150x150.webp 150w" sizes="auto, (max-width: 250px) 100vw, 250px" /><figcaption class="wp-element-caption">Absolutely NO fucking cows</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="250" height="250" src="https://snipe.net/wp-content/uploads/2023/11/Portugal-Information-Sign-Curve-of-the-main-road.webp" alt="" class="wp-image-6066" srcset="https://snipe.net/wp-content/uploads/2023/11/Portugal-Information-Sign-Curve-of-the-main-road.webp 250w, https://snipe.net/wp-content/uploads/2023/11/Portugal-Information-Sign-Curve-of-the-main-road-150x150.webp 150w" sizes="auto, (max-width: 250px) 100vw, 250px" /><figcaption class="wp-element-caption">I HAZ A ANGRIES</figcaption></figure>
</div>
</div>
<p>The post <a href="https://snipe.net/2023/11/24/portuguese-road-signs/">Portuguese Road Signs</a> appeared first on <a href="https://snipe.net">Snipe.Net</a>.</p>
]]></content>
		
					<link rel="replies" type="text/html" href="https://snipe.net/2023/11/24/portuguese-road-signs/#comments" thr:count="0" />
			<link rel="replies" type="application/atom+xml" href="https://snipe.net/2023/11/24/portuguese-road-signs/feed/atom/" thr:count="0" />
			<thr:total>0</thr:total>
			</entry>
		<entry>
		<author>
			<name>snipe</name>
							<uri>https://snipe.net</uri>
						</author>

		<title type="html"><![CDATA[Mexican Mafia Scams: A New Twist On an Old Trick]]></title>
		<link rel="alternate" type="text/html" href="https://snipe.net/2023/11/02/mexican-mafia-scams-a-new-twist-on-an-old-trick/" />

		<id>https://snipe.net/?p=6027</id>
		<updated>2023-11-03T14:17:59Z</updated>
		<published>2023-11-02T20:54:53Z</published>
		<category scheme="https://snipe.net/" term="Featured" /><category scheme="https://snipe.net/" term="Security / Privacy" /><category scheme="https://snipe.net/" term="Sticky" /><category scheme="https://snipe.net/" term="scams" />
		<summary type="html"><![CDATA[<p>Two days ago, I received a terrifying phone call. This is a cautionary tale about a two-minute conversation I had earlier this week. For those of you who don&#8217;t know, my husband and I moved to Portugal 5 months ago, so calls coming in on my US phone number (technically a NY area code, but [&#8230;]</p>
<p>The post <a href="https://snipe.net/2023/11/02/mexican-mafia-scams-a-new-twist-on-an-old-trick/">Mexican Mafia Scams: A New Twist On an Old Trick</a> appeared first on <a href="https://snipe.net">Snipe.Net</a>.</p>
]]></summary>

					<content type="html" xml:base="https://snipe.net/2023/11/02/mexican-mafia-scams-a-new-twist-on-an-old-trick/"><![CDATA[
<p>Two days ago, I received a terrifying phone call. </p>



<p>This is a cautionary tale about a two-minute conversation I had earlier this week.</p>



<p>For those of you who don&#8217;t know, <a href="https://snipe.pt">my husband and I moved to Portugal</a> 5 months ago, so calls coming in on my US phone number (technically a NY area code, but we moved from SoCal) are unusual. I&#8217;d normally just ignore them but this one came in with caller ID from Mexico. </p>



<p>Huh. </p>



<p>I have some friends in Mexico. They wouldn&#8217;t normally call me, but, sure. Okay.</p>



<p>When I answered, a man who spoke very good English but with a clearly Mexican accent responded to me with a deep sense of urgency. (Caveat: this all happened very quickly, so I might have missed some stuff from memory. Please forgive me.)</p>



<p>It went something like this:</p>



<p>Them: &#8220;Yes, hello &#8211; ma&#8217;am. I am an EMT in Mexico. Do you have a sister?&#8221;</p>



<p>I do, in fact, have a sister &#8211; and she does visit Mexico quite often, since she lives in Yuma, Arizona, right across the border from Mexico.</p>



<p>Me: &#8220;Uhm, I do, yes.&#8221;</p>



<p>Them: &#8220;Okay, your sister has been in a very bad accident. She&#8217;s bleeding a lot.&#8221;</p>



<p>This already feels scammy, especially since they didn&#8217;t ask for me by name, but anyone who knows me knows that I protec, so&#8230; </p>



<p>Me: &#8220;Okay, can you tell me her name. Does she have ID on her?&#8221;</p>



<p>Them: &#8220;Ma&#8217;am, she has no ID. She was in a terrible accident. She was hit by a car and is covered in blood. If you don&#8217;t have a sister, I&#8217;ll just keep calling until I can find someone who knows her. She&#8217;s unresponsive and is in really bad shape.&#8221;</p>



<p>Me, thinking &#8211; wait, if she has no ID, where did you get this number? Keep calling? Keep calling whom exactly? Where are you getting that list of people to try to call? But still, maybe my sister had my business card on her? That would be a little weird, but maybe not that weird. Maybe.</p>



<p>Me: &#8220;I do have a sister.&#8221;</p>



<p>Them: &#8220;What is your sister&#8217;s name?&#8221;</p>



<p>Me: &#8220;Why do you need to know that?&#8221;</p>



<p>Them: &#8220;Ma&#8217;am, I need to know her name so I can calm her down. She&#8217;s very disoriented right now.&#8221;</p>



<p>Wait, I thought she was unresponsive. Now she&#8217;s suddenly hysterical? Still, my sister, so&#8230;</p>



<p>Me: &#8220;I do have a sister, but&#8230; what does this person look like?&#8221;</p>



<p>My sister has a pretty specific look &#8211; weird hair, a particular build, etc.</p>



<p>Them: &#8220;Ma&#8217;am, she&#8217;s covered in blood and we&#8217;re running out of time. She&#8217;s going into shock. I need her name, and I need to know if she&#8217;s your sister so you can come here.&#8221;</p>



<p>If her head was covered in blood, I could see how they couldn&#8217;t have given me a hair color. At this point I should have asked for height/approximate build, etc. I didn&#8217;t. </p>



<p>Also, bro, I live in Portugal. While I&#8217;d definitely be on the first plane, that&#8217;s still 20 hours away.</p>



<p>Me: &#8220;Sir, I&#8217;m in Portugal. I can&#8217;t get to you or her quickly.&#8221;</p>



<p>I still don&#8217;t believe this is legit, but again, it&#8217;s my sister, so I&#8217;m still talking to him.</p>



<p>Them: &#8220;Please ma&#8217;am, just give me her name so we can calm her down.&#8221;</p>



<p>So, again, <em>unresponsive</em> or <em>hysterical</em>? Which is it?</p>



<p>I finally gave him her first name &#8211; which BTW is not exactly a national secret. I speak of her often on social media, in conference talks, etc. She had a TV show, after all. And she does the same about me.</p>



<p>Immediately after I told him her name, his tone <em>completely</em> changed, and he screamed at me that he worked for the &#8220;fuckin&#8217; mexican mafia&#8221;, that if I hang up now I&#8217;d never see her alive again, and that if I tried to text her, he&#8217;d know because he had her phone and he&#8217;d kill her immediately. Every other word at that point was peppered with expletives &#8211; which, I mean, whatever, I&#8217;m a NJ Italian. That&#8217;s not threatening language, that&#8217;s just a regular Tuesday.</p>



<p>While I was talking to him, I texted her quickly, asking if she was okay. I hadn&#8217;t yet remembered that she was about as far away from Mexico as someone in the U.S. can be without being in Alaska or Hawaii. I also didn&#8217;t hear my text tone in the background (and my sister annoyingly always has her sound turned up for every little notification), so at this point I&#8217;m pretty sure this is complete bullshit. </p>



<p>While risky, a kidnapper wouldn&#8217;t actually kill the one piece of leverage they have, and if it really <em>were</em> her and he saw the text message, he&#8217;d just move the goalposts, since killing her would mean he gets nothing. (Rational brain knows this, but it&#8217;s still scary af in the moment.)</p>



<p>Funny thing tho. Time zones are a bitch. I remembered during this very brief (2 minutes!) convo that she had just texted me 7 hours before, telling me she was in Green Bay, Wisconsin for a <a href="https://weldlikeagirl.us">welding competition</a>, and she was headed to Virginia soon after for a different welding competition. Mexico was not on the agenda. It wasn&#8217;t her, and this was very much a scam. </p>



<p>Yes, this is mental math I&#8217;m doing on the phone with a stranger who claims to have kidnapped my sister and is threatening to kill her. This is what working in infosec does to your brain, for better or worse. Worse yet, I actually <em>do</em> know people who have had family members kidnapped in Mexico.</p>



<p>He screamed at me one more time that he&#8217;s &#8220;with the fucking Mexican mafia&#8221;, to which I laughed at him, saying &#8220;My sister is not in Mexico. You&#8217;re not with the Mexican mafia, you piker&#8221; and hung up.</p>



<p>I admit my hands were a little shaky. </p>



<p>This all happened really, <em>really</em> fast, and I was caught on my back foot, for sure. And because enough things were plausible (unlikely, but plausible), even the skeptic I am had to consider it might be real. I was legitimately <em>scared</em> for my sister, the entire way through until I hung up. I&#8217;m also <em>thousands</em> of miles (and an entire continent) away. </p>



<p><em>Imagine</em> the guilt I&#8217;d feel if it <em>were</em> real and I wrote it off, and my sister died on the side of the road somewhere in Mexico. </p>



<p><strong>THAT is what they&#8217;re counting on.</strong> </p>



<p>Once she finally answered me, my sister said she was still in Green Bay, stuck at the airport for hours, her flight to Virginia delayed. The most danger she was in was being overcharged for airport bar drinks while waiting for her flight.</p>



<p>This is not a <em>new</em> scam, just a more urgent, updated version of <a href="https://eu.tallahassee.com/story/news/2017/06/13/tpd-warns-against-mexican-mafia-phone-scam/393381001/">an old one</a> that worked often enough for it to be worth the time of the criminals behind it. </p>



<p>TLDR of the old version is: you get a call from a (likely spoofed, but probably sometimes not) Mexican phone number where they claim to have kidnapped a family member, and they often demand other family contacts so they can extort them as well. </p>



<p> Normally it&#8217;s just a run of the mill kidnapping call, where they don&#8217;t actually have your family member, but they often have someone screaming in the background &#8220;just give them what they want!!!!&#8221; amid fake sobs. </p>



<p>The new twist is a bit more of a social engineering aspect &#8211; which, hey, nice job guys. Way to evolve. </p>



<p>The soft-open &#8211; &#8220;I don&#8217;t know your sister, I&#8217;m just trying to help&#8221; &#8211; gains trust and lowers guard. </p>



<p>The &#8220;I don&#8217;t know, but we&#8217;re running out of time&#8221; gives them plausible deniability for not immediately knowing things you&#8217;d expect someone to know, because they&#8217;re, y&#8217;know, trying to save someone&#8217;s life. It also adds a sense of urgency which will cause the victim to potentially ask less critical questions, react impulsively, etc.</p>



<p>It&#8217;s a clever twist on an old trick, and I <em>almost</em> have to respect the evolution of the game.</p>



<p>It&#8217;s abhorrent and vile and if I ever, <em>ever</em> meet one of these pieces of unmitigated shit, expect a bail gofundme for me to happen shortly after, because I will show no mercy to these monsters. People who prey on grief are the worst of the fucking worst. </p>



<p>Going with the premise that she&#8217;s incapacitated also takes away the best tool they would have had &#8211; proof of life from her own voice. Deepfakes are everywhere now, but I don&#8217;t think this was targeted, so they wouldn&#8217;t have known what she sounded like. In a targeted situation, this would have been a lot harder to detect and would have been way scarier. </p>



<h2 class="wp-block-heading">Things I Should Have Asked</h2>



<p>In the heat of the moment, this stuff is always really hard. You&#8217;re trying to stay calm, trying not to panic, maintain a healthy level of skepticism, but this is also a visceral, real emotional situation. </p>



<p>In this particular situation, some things I could have asked that would have defeated the &#8220;Ma&#8217;am we have no time, she&#8217;s going to die on the street narrative&#8221;:</p>



<ul class="wp-block-list">
<li>What is her build? You&#8217;re an EMT, you can give me a basic weight/build description. How tall is she? Is she fat or skinny? 50/50 chance on that last one, but I&#8217;d know for 100% certain it was BS if they guessed wrong.</li>



<li>What city in Mexico are you in? (I know where she&#8217;d normally be if she was there.)</li>
</ul>



<p>That wouldn&#8217;t have gotten me there that much faster &#8211; it was a two minute interaction after all, but it would have made it clearer a little sooner that this guy was full of shit. </p>



<h2 class="wp-block-heading">So, how do you safeguard yourself?</h2>



<p>Nothing is going to be foolproof, for sure, but there are some small things you can do with the friends and family you have to at least be able to confirm whether or not the threat is real. </p>



<p><strong>Set up &#8220;danger&#8221; words. </strong>My sister and I have had safeguards in place for years. We have a &#8220;danger word&#8221;, which is a normal english word that if we ever utter it to each other in private or public, we know that things are <em>Officially Not Good</em>. In this case, that word would have been defeated by the premise that she was disoriented, confused, unresponsive, etc because of the alleged car accident. If that were true (which it was not), it would be plausible that she wouldn&#8217;t remember or respond to that word or phrase. That wouldn&#8217;t have saved us in this case, but it&#8217;s generally a good policy and will help more often than not if you need it.</p>



<p><strong>Set up fake names</strong>. Have a specific fake name that you would call yourself in a danger situation to someone who would know that 1) it&#8217;s really you and 2) you are in actual danger. My sister and I have them. If they really had her and they really didn&#8217;t know her name, we would be able to communicate that we both acknowledge the danger without making it more dangerous. </p>



<p>If it would be too confusing to try to remember a first name, settle on a middle name that&#8217;s definitely not correct. Middle names don&#8217;t come up much, so it would stick out if it were present where the person had none, or was just flat out wrong. </p>



<p><strong>Ask what tattoos/piercings they have to identify them</strong>. This may or may not work, depending on the situation, but could potentially be a canary. If the &#8220;abductor&#8221; says &#8220;none&#8221; or &#8220;I can&#8217;t tell, there&#8217;s too much blood&#8221;, suggest a tattoo you know they don&#8217;t have that would be obvious outside of intimate areas, and try to get them to tell you. They won&#8217;t have an answer, so they&#8217;ll either lie (which outs them immediately) or they&#8217;ll keep stalling, which an EMT who is genuinely trying to find family members wouldn&#8217;t do. </p>



<p><strong>Make some shit up.</strong> &#8220;Did you find her prosthetic leg? What about her glass eye? I heard those can shatter &#8211; oh my god did it shatter?? Is it in her brain??&#8221; My sister does not have a prosthetic leg or a glass eye, but back to the 50/50 chance, if you let <em>them</em> believe <em>you</em> believe them, you can sometimes catch them in their own game. </p>



<p><strong>Tell your family your travel plans.</strong> This one seems obvious, but my sister travels <em>constantly</em> for her work and hobbies. Usually on big, international trips, she&#8217;ll email me flight details just in case, but for domestic flights, she doesn&#8217;t always tell me, especially since I&#8217;m 7 time zones away now. Thank god she did this time, or this could have gone worse. </p>



<p>Obviously, these types of scams are scary as hell, and they&#8217;re counting on the urgency they convey to cause you to misstep, even if you&#8217;re normally very savvy and skeptical about this type of thing. A little pre-planning can go a long way.</p>



<p>Stay safe out there everyone. &lt;3</p>



<p></p>
<p>The post <a href="https://snipe.net/2023/11/02/mexican-mafia-scams-a-new-twist-on-an-old-trick/">Mexican Mafia Scams: A New Twist On an Old Trick</a> appeared first on <a href="https://snipe.net">Snipe.Net</a>.</p>
]]></content>
		
					<link rel="replies" type="text/html" href="https://snipe.net/2023/11/02/mexican-mafia-scams-a-new-twist-on-an-old-trick/#comments" thr:count="0" />
			<link rel="replies" type="application/atom+xml" href="https://snipe.net/2023/11/02/mexican-mafia-scams-a-new-twist-on-an-old-trick/feed/atom/" thr:count="0" />
			<thr:total>0</thr:total>
			</entry>
		<entry>
		<author>
			<name>snipe</name>
							<uri>https://snipe.net</uri>
						</author>

		<title type="html"><![CDATA[Bye-bye Birdie]]></title>
		<link rel="alternate" type="text/html" href="https://snipe.net/2023/04/29/bye-bye-birdie/" />

		<id>https://snipe.net/?p=6016</id>
		<updated>2023-11-24T23:13:25Z</updated>
		<published>2023-04-29T17:48:24Z</published>
		<category scheme="https://snipe.net/" term="Uncategorized" />
		<summary type="html"><![CDATA[<p>Welp, Elon won. I won&#8217;t be posting on the bird site anymore. Since purchasing it, Musk has managed to make an already chaotic place much, much worse. It honestly sucks. I&#8217;ve met a ton of people there that I would never have known, and people on Twitter helped get me through some of the hardest [&#8230;]</p>
<p>The post <a href="https://snipe.net/2023/04/29/bye-bye-birdie/">Bye-bye Birdie</a> appeared first on <a href="https://snipe.net">Snipe.Net</a>.</p>
]]></summary>

					<content type="html" xml:base="https://snipe.net/2023/04/29/bye-bye-birdie/"><![CDATA[
<p>Welp, Elon won. I won&#8217;t be posting on the bird site anymore. Since purchasing it, Musk has managed to make an already chaotic place much, much worse. </p>



<p>It honestly sucks. I&#8217;ve met a ton of people there that I would never have known, and people on Twitter helped get me through some of the hardest parts of my life. A second divorce, my mother dying of cancer, etc. I met my current husband there. I&#8217;ve laughed and cried with so many amazing people there, and I hate that one idiot billionaire asshole could ruin it for me and so many others. </p>



<p>I&#8217;ll be keeping my account there so that anybody who missed my initial goodbye tweet can still know where to find me, and also so that no fuckwads try to poach my handle, but I won&#8217;t be engaging nearly as much. </p>



<p>I&#8217;ve been there since 2008. I built apps for the platform, back when that was a thing you could do for free, have tweeted hundreds of thousands of tweets, generating content for the platform for fifteen years.</p>



<p>I don&#8217;t have a lot more to say about it that I haven&#8217;t already said, but here&#8217;s where you can find me moving forward:</p>



<ul class="wp-block-list">
<li>Here (duh), though I don&#8217;t blog as much these days</li>



<li>Mastodon: <a href="https://hackers.town/@snipe" target="_blank" rel="noreferrer noopener">@snipe@hackers.town </a></li>



<li>BlueSky: <a href="https://staging.bsky.app/profile/snipe.lol" target="_blank" rel="noreferrer noopener">https://staging.bsky.app/profile/snipe.lol</a> </li>



<li>Github: <a href="https://github.com/snipe" target="_blank" rel="noreferrer noopener">https://github.com/snipe</a></li>



<li>Email: <a href="mailto:snipe@snipe.net">snipe@snipe.net</a></li>



<li>Portugal journey: <a href="https://snipe.pt">https://snipe.pt</a> (though once we&#8217;re over there, I may merge that site and this one) and <a href="https://arealisonandbradyinportugalyet.com">https://arealisonandbradyinportugalyet.com</a>. </li>
</ul>



<p>See you around &#8211; just not there. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2665.png" alt="♥" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>The post <a href="https://snipe.net/2023/04/29/bye-bye-birdie/">Bye-bye Birdie</a> appeared first on <a href="https://snipe.net">Snipe.Net</a>.</p>
]]></content>
		
					<link rel="replies" type="text/html" href="https://snipe.net/2023/04/29/bye-bye-birdie/#comments" thr:count="0" />
			<link rel="replies" type="application/atom+xml" href="https://snipe.net/2023/04/29/bye-bye-birdie/feed/atom/" thr:count="0" />
			<thr:total>0</thr:total>
			</entry>
		<entry>
		<author>
			<name>snipe</name>
							<uri>https://snipe.net</uri>
						</author>

		<title type="html"><![CDATA[Fuck Cancer]]></title>
		<link rel="alternate" type="text/html" href="https://snipe.net/2022/05/15/fuck-cancer/" />

		<id>https://snipe.net/?p=6003</id>
		<updated>2022-05-15T23:52:48Z</updated>
		<published>2022-05-15T23:13:00Z</published>
		<category scheme="https://snipe.net/" term="Misc" /><category scheme="https://snipe.net/" term="cancer" /><category scheme="https://snipe.net/" term="mom" /><category scheme="https://snipe.net/" term="trauma" />
		<summary type="html"><![CDATA[<p>This is a culmination of tweets I sent in 2019 as I was documenting the process of caring for my mother in Florida while she was dying from stage 4 cancer. This post isn&#8217;t really for anyone else, I just wanted to keep a longer-lasting record for myself.</p>
<p>The post <a href="https://snipe.net/2022/05/15/fuck-cancer/">Fuck Cancer</a> appeared first on <a href="https://snipe.net">Snipe.Net</a>.</p>
]]></summary>

					<content type="html" xml:base="https://snipe.net/2022/05/15/fuck-cancer/"><![CDATA[
<p>This is a culmination of tweets I sent in 2019 as I was documenting the process of caring for my mother in Florida while she was dying from stage 4 cancer. This post isn&#8217;t really for anyone else, I just wanted to keep a longer-lasting record for myself.</p>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">My mom was diagnosed with throat cancer &amp; possibly brain cancer today. I’m still a little shocked. <br><br>She’s a terrible human being, but I would never wish cancer on her. This is going to be a confusing and stressful time.<br><br>Also: fuck cancer in the eye forever</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1087930853114695682?ref_src=twsrc%5Etfw">January 23, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">I don’t know what stage she’s in yet, but survivability rates are pretty grim given her age and other health issues. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61e.png" alt="😞" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <br><br>Weird thing is that I keep finding jokes to make, but then I feel bad &amp; don’t make them. <br><br>It’s not funny. None of this is. Jokes are how I handle stress.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1087996258936078336?ref_src=twsrc%5Etfw">January 23, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">Quick mom update. It’s stage 4 non-small cell lung cancer that’s spread to her lymph nodes, adrenal glands and brain stem. Need one more test result to know which kind, but none are curable. It’s all going to be palliative care moving forward, probably hospice soon.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1098328294317936640?ref_src=twsrc%5Etfw">February 20, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">Yesterday was a rough goodbye. I reminded mom I’d be back in a week, but she spent most of the day crying and sorting her plant seeds. I kept my shit there, but fell apart in the car to the airport realizing that if she planted them today, she won’t be alive to see them grow</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1121823587273330689?ref_src=twsrc%5Etfw">April 26, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">She alternates between planning long-term projects months from now and the realization that she likely has only weeks left. Sometimes she tells me she wants it to be over, and other times she says she’s sad to know she’s leaving so soon. All understandable things to feel</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1121824037397647360?ref_src=twsrc%5Etfw">April 26, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">I try really hard not to cry in front of her. It wouldn’t be helpful, and could make her feel worse.<br><br>But my mind keeps flashing back to her tiny body on the patio, babbling about seeds and their packaging and what she plans to grow, while she sobs about what she knows is coming</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1121825010325135360?ref_src=twsrc%5Etfw">April 26, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">She’s sometimes coherent, sometimes rambling for hours, weaving together seemingly unrelated stories with thread only she can see. Hard to tell if it’s all the meds, or the tumors in her brain. It’s all still pretty surreal.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1121826547441127426?ref_src=twsrc%5Etfw">April 26, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">I feel guilty for leaving my sister to manage this week on her own. I feel guilty for dreading going back there next week to give my sister a week off. But mostly I’m just profoundly sad. I’m seeing anger poking through now though, which I suppose is normal.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1121827134719184896?ref_src=twsrc%5Etfw">April 26, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">Fuck. Nurse just told us mom is going to wake up one day and not recognize us. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61e.png" alt="😞" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br><br>I guess I was expecting this. I mean, brain tumors, and all. But fuck.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1121882540803903488?ref_src=twsrc%5Etfw">April 26, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">We head back to FL very early Wednesday. Mom tried to light &amp; smoke a nail file because she was out of cigs a few days ago, so I suspect the difference will be pretty dramatic, even after just a week. Here are some nice pics of her and my family tho. (Her bro + SIL, &amp; my sis) <a href="https://t.co/ASZfrTRCDL">pic.twitter.com/ASZfrTRCDL</a></p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1122922327635677184?ref_src=twsrc%5Etfw">April 29, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">Really hoping my MBP is finished being fixed before we leave so I don’t have to spend another week on Windows tho <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61e.png" alt="😞" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br><br>I know that seems like a weird thing to need at a time like this, but working and focusing is hard enough right now. Fighting my tools won’t improve that.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1122926582098608128?ref_src=twsrc%5Etfw">April 29, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">Back in Florida. Mom’s having a bad night and crying a lot. She doesn’t seem to be in pain right now, just very sad and frustrated, which is understandable. Her cognition is a little worse this week, but hard to tell if that’s the painkillers or the brain tumors.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1123787886967578624?ref_src=twsrc%5Etfw">May 2, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">She was trying to use the tv remote as a telephone (and was very frustrated that it wouldn’t work), and I think she called me by my father’s name at one point. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61e.png" alt="😞" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br><br>Fuck cancer forever.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1123788915863904256?ref_src=twsrc%5Etfw">May 2, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">She’s been starting to become adversarial about her meds sometimes now. Last night she refused to take them and just told sis to leave her alone and let her die already. (The meds aren’t prolonging her life, they’re just pain relief and anxiety/depression meds)</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1123791814635528199?ref_src=twsrc%5Etfw">May 2, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">She’s already said she wishes she could just end it. I wish doctor-assisted suicide was legal here in FL. Everybody deserves the right to die on their own terms, especially when in excruciating pain with no recovery possible</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1123799679869886464?ref_src=twsrc%5Etfw">May 2, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">She’s lucid enough now to be horrible. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f644.png" alt="🙄" class="wp-smiley" style="height: 1em; max-height: 1em;" /> She’s now telling me how much she hated my hair, how fat I used to be, and how she doesn’t like it when women’s butts are bigger than men’s butts, because they had babies and “let themselves go”. <a href="https://t.co/Y6IkhCYw2w">pic.twitter.com/Y6IkhCYw2w</a></p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1123956001152151555?ref_src=twsrc%5Etfw">May 2, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">Ah, we’re now at the “accidentally FaceTiming me from the toilet over and over” and “hitting the Siri button over and over” part of the day. <a href="https://t.co/B6S5mkhVfA">pic.twitter.com/B6S5mkhVfA</a></p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1123968905909821441?ref_src=twsrc%5Etfw">May 2, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">There is another part to caring for an infirm/elderly parent that&#39;s less emotionally taxing, but exhausting nonetheless. She uses the phone-paging button to call me on a whim, despite knowing I&#39;m working. <br><br>Apparently it was absolutely critical that I sweep the patio, right now.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1124035932674457601?ref_src=twsrc%5Etfw">May 2, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">But they kinda have you over a barrel. If you say you&#39;ll do it later, they&#39;ll try to do it themselves, and potentially fall.<br><br>So you never get more than 5 minutes of uninterrupted time to get work done. Sometimes the interruptions are serious (meds, etc). Sometimes they&#39;re BS.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1124036297256046592?ref_src=twsrc%5Etfw">May 2, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">So you get frustrated. And then they cry because they know they made you frustrated. So you get no work done, and they&#39;re upset with you anyway. <a href="https://t.co/l5ZQLRk2bO">pic.twitter.com/l5ZQLRk2bO</a></p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1124036953954050049?ref_src=twsrc%5Etfw">May 2, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">I think I just figured out the urgency. She knows she&#39;s going to die, sooner rather than later, but she doesn&#39;t know when. So of *course* everything is urgent. *Everything* is *now*.  Now is all she knows for sure she has.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1124532175599284227?ref_src=twsrc%5Etfw">May 4, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">It doesn&#39;t really make it less frustrating all the time, but I&#39;m hoping that having realized that, I can keep my cool a little better. I can be a little less selfish, a little kinder, a little more patient.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1124532508249460736?ref_src=twsrc%5Etfw">May 4, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">That&#39;s not to say I didn&#39;t almost launch my laptop &#8211; that I JUST got back from the Apple Store &#8211; across her living room, the 456,987th time today she needed something now, or changed settings that broke something that was working before. But I&#39;m going to try harder.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1124532801284579329?ref_src=twsrc%5Etfw">May 4, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">That&#39;s not to say I didn&#39;t almost launch my laptop &#8211; that I JUST got back from the Apple Store &#8211; across her living room, the 456,987th time today she needed something now, or changed settings that broke something that was working before. But I&#39;m going to try harder.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1124532801284579329?ref_src=twsrc%5Etfw">May 4, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">She weighed in at 66.5 lbs tonight. I can hear her moaning in pain in her room as I write this, and it&#39;s too soon to give her another oxy. <br><br>I just have to sit here until she falls asleep.<br><br>Fuck cancer forever.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1124533789781385216?ref_src=twsrc%5Etfw">May 4, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">She weighed in at 66.5 lbs tonight. I can hear her moaning in pain in her room as I write this, and it&#39;s too soon to give her another oxy. <br><br>I just have to sit here until she falls asleep.<br><br>Fuck cancer forever.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1124533789781385216?ref_src=twsrc%5Etfw">May 4, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">She&#39;s also having a manic evening, which means I might not be able to go to sleep for another 4 hours. Her nighttime meds include an anti-anxiety cocktail, but this still happens about every third or fourth night. She&#39;s knitting what I think must be a Great Wall of China Cozy</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1124535661116182529?ref_src=twsrc%5Etfw">May 4, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">Ugh. She&#39;s on the patio trying to rearrange the windows and watering her plants (that were watered earlier today.) This feels like it&#39;s going to be a long night, and I haven&#39;t had more than 2 straight hours of sleep since we got here.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1124548261098983425?ref_src=twsrc%5Etfw">May 4, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">Update: She’s still awake. Still crocheting. <a href="https://t.co/Sc3C4rozp5">pic.twitter.com/Sc3C4rozp5</a></p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1124581012418199552?ref_src=twsrc%5Etfw">May 4, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">The logistics here get a little more complex because she has Hep-C, so any bleeding needs to be handled very carefully, lest we risk infecting ourselves or others. <br><br>I just wrapped a skinned knee and put her to bed an hour ago, but then there was another pain spike.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1124592647396634625?ref_src=twsrc%5Etfw">May 4, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">She just fucked up the TV inputs again. She had closed the door so as not to disturb me, but it’s funny how super-bonkers-stress-level reflexes and static TV sounds at 8k decibels gets through a paper thin mobile home bedroom door. I fixed it, but mostly wish she’d lay in bed. <a href="https://t.co/J42npwGnjZ">pic.twitter.com/J42npwGnjZ</a></p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1124595427897167872?ref_src=twsrc%5Etfw">May 4, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">I‘ve done my very best tonight, so I’m going to get some sleep for an hour or so, until I’m woken up by her walker, or her crying, or her sweet little crap dog who decides he will whine until someone plays with him, even at inappropriate times.<br><br>Night folks. Love you all.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1124596442050461696?ref_src=twsrc%5Etfw">May 4, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">Mom’s never been great at tech, but when we got here I found extensive handwritten technical notes on how to do things, dozens and dozens in steno pads. How to check her email, etc. So I was trying to think of a way to make things less frustrating for her (and me)&#8230; <a href="https://t.co/vQ05GtKqe3">pic.twitter.com/vQ05GtKqe3</a></p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1124705756555640832?ref_src=twsrc%5Etfw">May 4, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">One real point of frustration is that she keeps managing to mess up the TV inputs. The buttons are small, and sometimes she sits in the remote, etc. So she ends up frustrated and spray-and-praying: pushing all the buttons, restarting the cable box, etc.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1124706227286630402?ref_src=twsrc%5Etfw">May 4, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">Then *I* get frustrated, since it was all working just fine 3 minutes ago when I left the room. She gets mad, I get mad, she feels stupid and bad for bothering me, etc. Massively stressful. <br><br>So I decided to write up documentation, just like she would. Including diagrams. <a href="https://t.co/PiqycewO5q">pic.twitter.com/PiqycewO5q</a></p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1124706720507416581?ref_src=twsrc%5Etfw">May 4, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">It’s not my best work &#8211; her shitty inkjet was not printing well so I had to analog this shit (my hand was cramping before I was done with the first page), but hopefully this will bring us a step closer to peace in the house, with her dignity as intact as possible.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1124707122065833985?ref_src=twsrc%5Etfw">May 4, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">Omg y’all. I was telling a story about how I solved a real-life problem through empathy and documentation, and to marvel at her tech writing skills.<br><br>Stop trying to give me technical solutions here. I know what the options are.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1124708205869830144?ref_src=twsrc%5Etfw">May 4, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">(Also friends don’t let friends buy ink jets.)</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1124708392482766848?ref_src=twsrc%5Etfw">May 4, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">She melted down earlier, partly because of pain, and partly because she washed herself up a bit and saw what her body looks like now in the mirror. It was pretty hard to just stand there and listen to her sobbing, putting my hand on her back, but having no solutions to offer her.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1124748101665869829?ref_src=twsrc%5Etfw">May 4, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">She finally settled and decided she wanted to wear a cute outfit. She’s always liked how I did my makeup, so I offered to do hers, &amp; we had a fun photo shoot. <br><br>As I was directing, for the second one, I said “okay, give me the ‘I’m disappointed at what you did to your hair’ look” <a href="https://t.co/rIvOyxDib4">pic.twitter.com/rIvOyxDib4</a></p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1124748686469357568?ref_src=twsrc%5Etfw">May 4, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">Interesting thing in providing 24/7 care for a dying parent is how it affects your own cognition. It&#39;s as if focusing on 1 thing for a longer time gives your brain time to defrag. Interruptions every 1-5 min for days have left me unable to remember things like words/names</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1125107516063535104?ref_src=twsrc%5Etfw">May 5, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">It&#39;s entirely possible it&#39;s just a symptom of not sleeping a lot or well, but that&#39;s pretty normal for me. Today has had fewer interruptions so far (bad pain day for her), and I feel like I can kind of form a complete thought again. For now.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1125108426521157637?ref_src=twsrc%5Etfw">May 5, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">I wish I had thought to take some sort of cognitive baseline test before and then take them again each day I&#39;m here.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1125116412794687489?ref_src=twsrc%5Etfw">May 5, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">I just stress-ate a cheese danish. Not even a good one from a real bakery, but one of the pre-packaged ones that never go bad (because that’s not creepy.) <br><br>I hate this. On top of everything else, I’m going to be 20lbs heavier when this is all over, after working so hard to lose</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1125542629314375680?ref_src=twsrc%5Etfw">May 6, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">I’m not even a stress-eater. But when we committed to losing weight, I cleaned out everything in our house that wouldn’t work with our new way of eating. Mom’s place is nothing but junk food, pasta, stews, packaged everything. We bought food for us, but stress + temptation = fail</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1125543030683992064?ref_src=twsrc%5Etfw">May 6, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">I lost it the first time, so I know I can again, but it’s one more thing for me to be disappointed in myself with. Losing my temper, not being kind enough to someone who is suffering, and not even being able to stop eating bullshit I don’t even like. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61e.png" alt="😞" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://t.co/s4VeJJzWQa">pic.twitter.com/s4VeJJzWQa</a></p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1125543452199067650?ref_src=twsrc%5Etfw">May 6, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">4am hospice nurse visit. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f641.png" alt="🙁" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1125672556621717504?ref_src=twsrc%5Etfw">May 7, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">I ended up cancelling the nurse visit. The pain finally exhausted her to sleep, so waking her up seemed counter-productive.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1125683302931869696?ref_src=twsrc%5Etfw">May 7, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">Ugh. I got an hour and a half of sleep last night, and mom slept all day (because pain) so she is WIDE AWAKE now (past 4AM). She’s hard of hearing now and hates her hearing aid, so the TV is blaring, her O2 machine is humming, and <a href="https://twitter.com/uberbrady?ref_src=twsrc%5Etfw">@uberbrady</a> is snoring in my ear. <a href="https://t.co/EuMd574HqN">pic.twitter.com/EuMd574HqN</a></p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1126037338696630273?ref_src=twsrc%5Etfw">May 8, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">Her pain levels and moods swing wildly throughout the day (and night. Sigh.) She went from sobbing in pain and sadness and despair to foggily creeping around the kitchen, Blair witch style, and now she’s back in a manic episode, all within two hours. <br><br>I’m so tired. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f641.png" alt="🙁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://t.co/49446Usml1">pic.twitter.com/49446Usml1</a></p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1126038619377033217?ref_src=twsrc%5Etfw">May 8, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">Today was weird. As in atypical for my experience here. She was not in pain much, but zombie-like. They switched her meds yesterday to up the methadone (nerve pain) and reduce the oxy. Hard to say what made her like this tho, because tumors.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1126389323862040576?ref_src=twsrc%5Etfw">May 9, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">We all expect there to be loss of cognition, between all the meds and the literal tumors on her brain, but she’s never before needed something and not been able to tell me what it was. We may be at that shitty in-between now.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1126389612262375424?ref_src=twsrc%5Etfw">May 9, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">She was a little more lucid this morning when we left her, but only a little. She’s very weak now, and is having trouble moving around with the walker. Nurse said she doesn’t think it’s the change in meds. <br><br>She cries a lot now, and can’t usually tell me if it’s b/c pain or sad</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1126643119368200192?ref_src=twsrc%5Etfw">May 10, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">I think she knows how close to the end of her road we are. <br><br>The look on her face when I said goodbye&#8230; shock, horror, disappointment, profound sadness. I told her I’d see her next week and she wailed “Noooo!” <br><br>I really hope that’s not the last memory I have of her.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1126643584063565826?ref_src=twsrc%5Etfw">May 10, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">Between my sis and I, it’s like a horrible game of musical chairs, and we never know when the music will stop playing, which one of us will be there when she draws her final breath, and how awful it might be for her.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1126643976532926464?ref_src=twsrc%5Etfw">May 10, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">She could go peacefully in her sleep, or suffocate while awake. And whoever is there has to see and remember it, and the one who isn’t there will feel trrrible for missing it.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1126644231429210112?ref_src=twsrc%5Etfw">May 10, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">Btw, I’ve been keeping this journey in the same thread in case folks need to mute it. Many have reached out to me to offer support and comfort, but I know this issue is pretty raw for a lot of people too. Mute at will, I won’t be offended. We all have to take care of ourselves</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1126644623449808896?ref_src=twsrc%5Etfw">May 10, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">For those that have reached out, if I haven’t responded, I hope you understand. This is all a little overwhelming. Please know that I’ve read every message, and deeply appreciate your support and kindness. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2764.png" alt="❤" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1126645419230973952?ref_src=twsrc%5Etfw">May 10, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">Sis is with Mom this Mother’s Day, and they shared mimosas. <br><br>Nurses have said she’s “transitioning”, medical-speak for actively dying. She’ll be bedridden soon, her breathing and strength both very weak. <br><br>I’m sorry I couldn’t be there for what will be her last Mother’s Day. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f614.png" alt="😔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://t.co/NObHOe52Nx">pic.twitter.com/NObHOe52Nx</a></p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1127622453797068800?ref_src=twsrc%5Etfw">May 12, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">She’s not very coherent at times (because brain tumors and heavy meds). Sis said mom told her that “She could see Texas”, and we’re still trying to figure out if that’s heaven or hell. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f601.png" alt="😁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> (I don’t think mom’s ever been to Texas.)</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1127623472434241536?ref_src=twsrc%5Etfw">May 12, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">One of my favorite memories of her was when we were little and she’d have to drive the trash cans down to the street. When she’d drop it off, she’s let us sit in the trunk with it open and swerve all over the road. Was SO FUN. Like our own rollercoaster. We’d giggle like idiots <a href="https://t.co/AGQd7894mk">pic.twitter.com/AGQd7894mk</a></p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1127649890736037888?ref_src=twsrc%5Etfw">May 12, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">We’re likely down to hours, not days now &#8211; tho that broad is stubborn, so who knows. She’s on liquid morphine and haldol now, and is mostly unresponsive. Her best friend from HS asked if she could talk to her one last time and that’s sticking in my craw as particularly sad.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1128145706202492928?ref_src=twsrc%5Etfw">May 14, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">I’ve never spoken to someone knowing it would be the last time. There’s probably some good closure in there, but it strikes me as so profoundly sad. It’s weighing on my heart a lot tonight.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1128146153420181505?ref_src=twsrc%5Etfw">May 14, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">She’s gone. Thank you to all who sent love.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1128234898974576640?ref_src=twsrc%5Etfw">May 14, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">Right now I feel mostly relief. She’s not suffering anymore. It’s not really sunk in yet, but she isn’t in pain anymore and that’s huge. <br><br>I am sad. Of course I’m sad. My relationship with her was fraught with peril. She fucked a lot up. She also did some important bits right.</p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1128615813563334658?ref_src=twsrc%5Etfw">May 15, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">Narrator: it was. <a href="https://t.co/JnfYfKMcWD">https://t.co/JnfYfKMcWD</a></p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1128644003623137280?ref_src=twsrc%5Etfw">May 15, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">CW: parental death<br><br>My mom died of cancer almost 6 months ago. I took photos of her during her last weeks, b/c it was surreal and also true, and I needed to make sure I remembered the truth. I find myself struggling when scrolling through photos. Not sure if I should hide them <a href="https://t.co/NCuLrNguhZ">pic.twitter.com/NCuLrNguhZ</a></p>&mdash; snipe ⭑⭒⭒⭒⭒ (@snipeyhead) <a href="https://twitter.com/snipeyhead/status/1189608243191939072?ref_src=twsrc%5Etfw">October 30, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>
<p>The post <a href="https://snipe.net/2022/05/15/fuck-cancer/">Fuck Cancer</a> appeared first on <a href="https://snipe.net">Snipe.Net</a>.</p>
]]></content>
		
					<link rel="replies" type="text/html" href="https://snipe.net/2022/05/15/fuck-cancer/#comments" thr:count="0" />
			<link rel="replies" type="application/atom+xml" href="https://snipe.net/2022/05/15/fuck-cancer/feed/atom/" thr:count="0" />
			<thr:total>0</thr:total>
			</entry>
		<entry>
		<author>
			<name>snipe</name>
							<uri>https://snipe.net</uri>
						</author>

		<title type="html"><![CDATA[Managing Stress, Anxiety and Depression During Covid-19]]></title>
		<link rel="alternate" type="text/html" href="https://snipe.net/2020/03/24/managing-stress-anxiety-and-depression-during-covid-19/" />

		<id>https://snipe.net/?p=5937</id>
		<updated>2020-03-24T06:58:15Z</updated>
		<published>2020-03-24T00:53:03Z</published>
		<category scheme="https://snipe.net/" term="Uncategorized" />
		<summary type="html"><![CDATA[<p>My team at Grokability has been fully distributed since I started the company five years ago. Some of us are local, some of us are halfway across the country, and some even in other countries. All of us work from home all the time. While you&#8217;d think we&#8217;d be just fine dealing with the self-isolation [&#8230;]</p>
<p>The post <a href="https://snipe.net/2020/03/24/managing-stress-anxiety-and-depression-during-covid-19/">Managing Stress, Anxiety and Depression During Covid-19</a> appeared first on <a href="https://snipe.net">Snipe.Net</a>.</p>
]]></summary>

					<content type="html" xml:base="https://snipe.net/2020/03/24/managing-stress-anxiety-and-depression-during-covid-19/"><![CDATA[
<p>My team at Grokability has been fully distributed since I started the company five years ago. </p>



<p>Some of us are local, some of us are halfway across the country, and some even in other countries. All of us work from home all the time. </p>



<p>While you&#8217;d think we&#8217;d be just fine dealing with the self-isolation and social-distancing we&#8217;re all (hopefully) practicing during the COVID-19 pandemic, some of my team members are struggling. (Full disclosure, so am I, and so is my partner. It&#8217;s normal to struggle when thing are so scary.)</p>



<p>This is&#8230; different. Much harder.</p>



<p>It&#8217;s hardly surprising. Working remotely is one thing. Working remotely *while* taking care of your children 24/7 (versus getting a break while they&#8217;re in school/daycare), supporting your partner who might also be dealing with depression and anxiety, and then handling the sometimes overwhelming fear for their health, their loved ones, and the economic impacts that we&#8217;re just beginning to understand is a whole different animal.</p>



<p>Now compound that stress by requiring people to work from home who have never done it before, and don&#8217;t necessarily have the skillset to handle it well. </p>



<p>Here&#8217;s some good advice on managing anxiety/depression during this trying time, collected from various places and also from my own experiences.</p>



<h2 class="wp-block-heading">Individual Options</h2>



<ul class="wp-block-list"><li>Connect with loved ones more via video chat</li><li>Read a book or listen to an audiobook</li><li>Play video games (if that helps distract &#8211; even iOS games can help &#8211; we use Hidden Object Puzzles in my household) </li><li>Stay active and try to go outside. Learn yoga, go outside for runs, walks, hikes or bike rides (but maintain distance)</li><li>Remember to eat enough and drink enough water. Set timers if you need to.</li><li>If you have health insurance and if your provider offers it, consider scheduling a virtual appointment with a therapist.</li><li>Volunteer to help with online fundraising or other charity work &#8211; learn to sew and <a href="https://freesewing.org/blog/facemask-frenzy/">make face masks</a></li><li>Keep a leaner-than-usual diet of social media if you can. lots of FUD and anger and misinformation there and it can turn into a depression+anxiety k-hole</li><li>Make time for yourself, even if you have to care for others. Think airplane-style &#8220;put your breathing mask on first&#8221;</li><li>Take a bubble bath with candles and a glass of wine</li><li>Clean, if you&#8217;re not at risk of it turning obsessive</li><li>Take an online class and learn something new, even (especially?) if it has absolutely nothing to do with your job</li><li>Watch movies/TV (not the best option, but it can distract for a bit). Try to stay away from dystopian stories if it&#8217;s going to make it worse</li><li>Revisit old hobbies that you wish you were still doing</li><li>Learn an instrument and learn to play your favorite song</li><li>Learn a foreign language &#8211; <a href="https://www.duolingo.com">Duolingo</a> is free! (Or <a href="http://www.signlanguage101.com">learn ASL</a> for the inevitable times when your video conference audio drops out without warning)</li><li>Learn to cook (if you don&#8217;t already know how) &#8211; try new recipes and go outside your comfort zone. Youtube has tons of cooking videos</li><li>Play your favorite music and sing along to it</li><li>Try <a href="https://www.youtube.com/watch?v=n4fRZU5oEMI">learning to meditate</a> </li><li>Watch youtube videos and learn how to dance</li><li>Write a short story or poems</li><li>Shower, even if you don&#8217;t feel like it</li><li>Put on makeup every now and then (if you normally would) if it helps you feel human</li><li>Learn to garden. Growing things (even herbs, if you don&#8217;t get a lot of sun or don&#8217;t have much space) can be enormously rewarding. Getting your hands a little dirty, stepping away from the screens, and creating new life in a time where the pallor of so much death and fear is constant can be huge. </li><li>Journal about how you&#8217;re feeling through this whole thing</li><li>Make a matrix of ways to exercise, be creative and practice self-card. Set guidelines for your family to do 1x exercise, 1x creative and 3x self-care. (This is brilliant, <a href="https://twitter.com/JCACharles/status/1242220288718168064?s=20">via @JCACharles</a>) </li><li>Don&#8217;t be afraid to &#8220;revert to childhood&#8221;. Twitter user <a href="https://twitter.com/alizasherman">@alizasherman</a> (whose company <em>I</em> used to work for 100 years ago) <a href="https://twitter.com/alizasherman/status/1242257448984928256">recommends</a> playing with Play-Doh, coloring in coloring books, etc. Kids optional. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </li></ul>



<p>Not everything you do has to be productive, and none of this is a silver bullet. It just needs to prevent you from being completely overwhelmed, and keeping you feeling human during a time when it&#8217;s easy to feel so far away and helpless that you can forget that you are. </p>



<h2 class="wp-block-heading">Organizational Options</h2>



<p>As a company, we&#8217;ve already have some steps in place to make sure we&#8217;re checking in on folks&#8217; mental health. Special Slack status icons that can be used by people struggling with anxiety/depression that allow them to convey that in a way that doesn&#8217;t require saying the words out loud (which can be hard, when you&#8217;re in the thick of it), for example. This allows us to reach out privately, and also lets us know that we need to pick up some of the workload from them to give them a break. </p>



<p>It&#8217;s not perfect, but hey, this stuff is hard. Harder right now. We&#8217;ve taken some extra steps that we hope will help make people feel less isolated &#8211; and we hope they&#8217;ll help you too. </p>



<ul class="wp-block-list"><li>Start at least one meeting per day with 5-10 minutes of the team leader asking how everyone is doing, how their kids are coping, what they&#8217;re doing to manage stress, etc. Listen to the answers and ask follow-up questions. Sometimes just the ability to vent to another non-family adult goes a long way. </li><li>Pay special attention to parents who are trying to juggle their jobs and sudden 24/7 childcare. </li><li>Let them know it&#8217;s okay to be scared, frustrated, depressed, etc. They are human, and those are human reactions to a crisis. </li><li>If it&#8217;s possible to reassure them about their job security, do so. It&#8217;s on everyone&#8217;s mind right now. </li><li>Use video chat (internet reliability permitting), even if you hate it (I hate it). Seeing friendly faces matters right now. </li><li>Arrange a virtual happy hour (no booze required, of course) where co-workers can socialize with each other and not talk about work. This is especially useful for parents, or people who live alone, who might really just need another adult to talk to. Put it on the calendar. </li><li>Arrange a &#8220;spirit day&#8221; where people wear weird things (PJs, onesies, goofy hats, etc). You can make this part of virtual happy hour if it works for the team.</li><li>Let your employees use your teleconferencing systems to talk to friends and family.</li><li>Expect their productivity to be lower than usual. They are constantly worrying about friends, family, jobs, mortgages, etc. It&#8217;s simply not possible run at 100% with that level of constant mortal stress. Communicate with them that it&#8217;s okay. </li><li>Create a separate &#8220;good news&#8221; channel on Slack where people can post positive stories and/or funny memes . This (for us) is different than #random, since we wanted to keep #random for off-topic discussions,  but have a place to drop only positive things for folks when they need it. </li><li><a href="https://twitter.com/irrationalRobot/status/1242222414496329729">One Twitter user</a> mentioned that they set aside a half hour of every lunch break to watch Avatar: The Last Airbender. This can be hard with distributed teams across multiple timezones, but I <em>love</em> the idea. Put it on the calendar. </li><li>Let them know it&#8217;s okay if a kid is screaming or a dog is barking during a call. We&#8217;re all trying to do our best, and life does sometimes get in the way of conference calls.</li><li>If you can afford it, consider offering memberships to <a href="https://getsketchbox.com">SketchBox</a>, <a href="https://store.steampowered.com/digitalgiftcards/">Steam</a>, <a href="https://www.audible.com/ep/giftcenter">Audible</a>, <a href="https://www.amazon.com/Browse-Kindle-Unlimited-Books/b?node=9069934011">Amazon Kindle Unlimited</a>, <a href="https://www.headspace.com">Headspace</a>, <a href="https://www.adafruit.com/adabox">AdaFruit&#8217;s AdaBox</a>, <a href="https://www.skillwise.com">Skillwise</a>, etc. These services can help them learn new things and channel creativity in a way that&#8217;s positive and affirming.</li></ul>



<p>Above all, be gentle to each other and lead with compassion, and remember to take care of yourself, too. </p>



<p>Sincerely,</p>



<p>Alison Gianotto</p>



<p><img loading="lazy" decoding="async" width="150" height="28" class="wp-image-5948" style="width: 150px;" src="https://snipe.net/wp-content/uploads/2020/03/ag-signature.gif" alt="Alison L Gianotto signature"><br> Founder &amp; Chief Mohawk Officer<br> agianotto@grokability.com </p>
<p>The post <a href="https://snipe.net/2020/03/24/managing-stress-anxiety-and-depression-during-covid-19/">Managing Stress, Anxiety and Depression During Covid-19</a> appeared first on <a href="https://snipe.net">Snipe.Net</a>.</p>
]]></content>
		
					<link rel="replies" type="text/html" href="https://snipe.net/2020/03/24/managing-stress-anxiety-and-depression-during-covid-19/#comments" thr:count="0" />
			<link rel="replies" type="application/atom+xml" href="https://snipe.net/2020/03/24/managing-stress-anxiety-and-depression-during-covid-19/feed/atom/" thr:count="0" />
			<thr:total>0</thr:total>
			</entry>
		<entry>
		<author>
			<name>snipe</name>
							<uri>https://snipe.net</uri>
						</author>

		<title type="html"><![CDATA[So you ran composer as root&#8230;]]></title>
		<link rel="alternate" type="text/html" href="https://snipe.net/2017/11/15/so-you-ran-composer-as-root/" />

		<id>https://snipe.net/?p=5832</id>
		<updated>2017-11-15T06:09:15Z</updated>
		<published>2017-11-15T06:08:49Z</published>
		<category scheme="https://snipe.net/" term="PHP/mySQL" /><category scheme="https://snipe.net/" term="Web Development" /><category scheme="https://snipe.net/" term="composer" /><category scheme="https://snipe.net/" term="php" />
		<summary type="html"><![CDATA[<p>Composer is a PHP dependency manager that&#8217;s used in just about any modern PHP application, and it works similarly to how Bundler works for Ruby. Even though Composer itself gives you a warning about not running it as root, lots of people disregard this warning and run it as root anyway. We run into this [&#8230;]</p>
<p>The post <a href="https://snipe.net/2017/11/15/so-you-ran-composer-as-root/">So you ran composer as root&#8230;</a> appeared first on <a href="https://snipe.net">Snipe.Net</a>.</p>
]]></summary>

					<content type="html" xml:base="https://snipe.net/2017/11/15/so-you-ran-composer-as-root/"><![CDATA[<p><a href="https://getcomposer.org">Composer</a> is a PHP dependency manager that&#8217;s used in just about any modern PHP application, and it works similarly to how Bundler works for Ruby.</p>
<p>Even though Composer itself gives you a warning about not running it as root, lots of people disregard this warning and run it as root anyway. We run into this issue a lot on my open source asset management project, <a href="https://snipeitapp.com">Snipe-IT</a>, so I figured I&#8217;d write up how to fix this if you inadvertently (or advertently) ran composer as root.<span id="more-5832"></span></p>
<p><img loading="lazy" decoding="async" class="aligncenter size-large wp-image-5833" src="https://snipe.net/wp-content/uploads/2017/11/maxresdefault-1024x576.jpg" alt="" width="720" height="405" srcset="https://snipe.net/wp-content/uploads/2017/11/maxresdefault-1024x576.jpg 1024w, https://snipe.net/wp-content/uploads/2017/11/maxresdefault-300x169.jpg 300w, https://snipe.net/wp-content/uploads/2017/11/maxresdefault-768x432.jpg 768w, https://snipe.net/wp-content/uploads/2017/11/maxresdefault-720x405.jpg 720w, https://snipe.net/wp-content/uploads/2017/11/maxresdefault-580x326.jpg 580w, https://snipe.net/wp-content/uploads/2017/11/maxresdefault-320x180.jpg 320w, https://snipe.net/wp-content/uploads/2017/11/maxresdefault.jpg 1280w" sizes="auto, (max-width: 720px) 100vw, 720px" /></p>
<h3>&#8220;Installing Composer&#8221; vs &#8220;Composer Install&#8221;</h3>
<p>Many people run Composer as root because they misunderstand how Composer works. If you <a href="https://getcomposer.org/doc/00-intro.md#globally">installed Composer globally</a>, it wouldn&#8217;t be odd for you to have to install it as root &#8211; meaning<em> the Composer binary itself</em>.</p>
<p>But, and here&#8217;s the tricksy part, <em>installing Composer</em> is not the same thing as <code class="EnlighterJSRAW" data-enlighter-language="generic">composer install</code>.  Installing Composer means that the Composer dependency management tool is now installed on your server, while <code class="EnlighterJSRAW" data-enlighter-language="shell">composer install</code> is a specific command you send to Composer to have it actually pull down those dependencies, based on the <code class="EnlighterJSRAW" data-enlighter-language="generic">composer.lock</code> file that was (usually) provided by whatever software you&#8217;re trying to set up. If you install Composer globally, you can use the same Composer binary to manage dependencies for many projects &#8211; but each project will have its own composer.json and composer.lock, which Composer uses to figure out what it needs to download for you.</p>
<p>Let&#8217;s look at some common files and commands you might encounter when using Composer, as I think that might help clear up a few things:</p>
<ul>
<li><code class="EnlighterJSRAW" data-enlighter-language="generic">composer.phar</code> &#8211; This is your Composer <em>binary</em>. You will install this only once, though it may prompt you to update it occasionally. The easiest way to use Composer is to install it globally, that way it&#8217;s available anywhere in your system via the <code class="EnlighterJSRAW" data-enlighter-language="generic">composer</code> command. If it&#8217;s installed locally, you&#8217;ll have a composer.phar in your project root, and if you want to install any other PHP projects that use composer, you&#8217;ll have to download it to each project&#8217;s directory.</li>
<li><code class="EnlighterJSRAW" data-enlighter-language="generic">composer.json</code> &#8211; This file tells Composer what libraries are required, and what version the developer of the PHP project intends for you to use, similar to the <code class="EnlighterJSRAW" data-enlighter-language="generic">Gemfile</code> in Ruby or the <code class="EnlighterJSRAW" data-enlighter-language="generic">package.json</code> in node.</li>
<li><code class="EnlighterJSRAW" data-enlighter-language="generic">composer update</code> &#8211; <strong>Unless you are a developer, you should almost never run this command</strong>. This tells Composer to grab the most recent versions of libraries specified in the <code class="EnlighterJSRAW" data-enlighter-language="generic">composer.json</code> file, and generate a new <code class="EnlighterJSRAW" data-enlighter-language="generic">composer.lock</code> file that locks down those library versions.</li>
<li><code class="EnlighterJSRAW" data-enlighter-language="generic">composer install</code> &#8211; As a non-developer who is just trying to install dependencies, this is the command you typically want. composer install tells Composer to use the <code class="EnlighterJSRAW" data-enlighter-language="generic">composer.lock</code> file that the developer provided, and download the specific versions of each library. This is important, because sometimes older or newer versions of a library might not work with the PHP project. The developer&#8217;s <code class="EnlighterJSRAW" data-enlighter-language="generic">composer.lock</code> file makes sure you&#8217;re downloading the version of each library that they have tested and confirmed works with the project. The libraries will be downloaded into a folder (usually called <code class="EnlighterJSRAW" data-enlighter-language="generic">vendor</code> or <code class="EnlighterJSRAW" data-enlighter-language="generic">vendors</code>) in the PHP project root.</li>
</ul>
<p>You might install the Composer <em><strong>binary</strong></em> as root (and then move it to <code class="EnlighterJSRAW" data-enlighter-language="generic">/usr/local/bin</code> so it&#8217;s available globally), but you pretty much never want to run <code class="EnlighterJSRAW" data-enlighter-language="generic">composer install</code> as root.</p>
<p>Composer tries to prevent you from running <code class="EnlighterJSRAW" data-enlighter-language="generic">composer install</code> as root/admin by throwing up a big fat warning, but if you&#8217;ve already run it as root once, you may end up with some permissions errors if you try to run it as non-root, which makes some people give up and just always run it as root.</p>
<p><strong>If you&#8217;re seeing permissions errors when trying to run composer install as a non-privileged user, someone somewhere probably ran it as root at some point</strong>, which means root owns some of the generated files. That&#8217;s a pain in the ass to fix, but not impossible.</p>
<h3>I wish to repent and make amends for my past transgressions and no longer run Composer as root</h3>
<p>Great! It&#8217;s not actually that hard to make things right if you ran Composer as root, but it can be a little tricky to find all of the weird caches and config directories it hides within your system.</p>
<p>When you installed Composer, it created a <code class="EnlighterJSRAW" data-enlighter-language="generic">.composer</code> directory somewhere in your system, usually in your home directory. So for example, on a Mac, I&#8217;d look in <code class="EnlighterJSRAW" data-enlighter-language="generic">/Users/snipe/.composer</code>. On linux, I&#8217;d look in <code class="EnlighterJSRAW" data-enlighter-language="generic">/home/snipe/.composer</code>. Remember that it&#8217;s a directory that starts with a dot, which on many operating systems means it&#8217;s a hidden file.</p>
<p>The contents of the <code class="EnlighterJSRAW" data-enlighter-language="generic">.composer</code> directory usually look something like this:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-large wp-image-5836" src="https://snipe.net/wp-content/uploads/2017/11/Screen-Shot-2017-11-14-at-9.44.35-PM-597x1024.png" alt="" width="597" height="1024" srcset="https://snipe.net/wp-content/uploads/2017/11/Screen-Shot-2017-11-14-at-9.44.35-PM-597x1024.png 597w, https://snipe.net/wp-content/uploads/2017/11/Screen-Shot-2017-11-14-at-9.44.35-PM-175x300.png 175w, https://snipe.net/wp-content/uploads/2017/11/Screen-Shot-2017-11-14-at-9.44.35-PM-580x994.png 580w, https://snipe.net/wp-content/uploads/2017/11/Screen-Shot-2017-11-14-at-9.44.35-PM-320x548.png 320w, https://snipe.net/wp-content/uploads/2017/11/Screen-Shot-2017-11-14-at-9.44.35-PM.png 608w" sizes="auto, (max-width: 597px) 100vw, 597px" /></p>
<p>For the sake of this example, let&#8217;s say my non-privileged user is <code class="EnlighterJSRAW" data-enlighter-language="generic">snipe</code>. This user is part of the apache group, so it can read, write and execute any files where the group is permitted to do so &#8211; for example, error logs, file upload directories, etc.</p>
<p>We want to make sure that the vendor directory within the project root is owned by <code class="EnlighterJSRAW" data-enlighter-language="generic">snipe</code>, not by <code class="EnlighterJSRAW" data-enlighter-language="generic">root</code>, otherwise if I try to run <code class="EnlighterJSRAW" data-enlighter-language="generic">composer install</code> as <code class="EnlighterJSRAW" data-enlighter-language="generic">snipe</code>, I&#8217;ll get permission errors, since <code class="EnlighterJSRAW" data-enlighter-language="generic">root</code> owns those files and directories.</p>
<p>Then we also want to make sure that <code class="EnlighterJSRAW" data-enlighter-language="generic">.composer</code> directory we mentioned is readable and writable by <code class="EnlighterJSRAW" data-enlighter-language="generic">snipe</code>, since that directory gets updated with new cached vendors every time you run <code class="EnlighterJSRAW" data-enlighter-language="generic">composer install</code>.</p>
<p>As we mentioned above, if you initially ran Composer as root, that directory might be in <code class="EnlighterJSRAW" data-enlighter-language="generic">/home/root</code>. The easiest thing to do is to delete the <code class="EnlighterJSRAW" data-enlighter-language="generic">.composer</code> directory altogether &#8211; a new one will be generated when you run composer install again, and this time, since you&#8217;re running it as <code class="EnlighterJSRAW" data-enlighter-language="generic">snipe</code>, it will have the correct permissions.</p>
<p>So our fix would look something like this:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="shell">sudo chown -R snipe.apache /var/www/html/vendor
sudo rm -Rf /home/root/.composer
cd  /var/www/html/
composer install</pre>
<p>Once your .composer directory and your vendors are owned by the correct user, you should be able to run Composer as a non-root user. You may also need to delete or chown the files in <code class="EnlighterJSRAW" data-enlighter-language="generic">bootstrap/cache</code> (if you have any there) as they will also be owned by root.</p>
<p>The post <a href="https://snipe.net/2017/11/15/so-you-ran-composer-as-root/">So you ran composer as root&#8230;</a> appeared first on <a href="https://snipe.net">Snipe.Net</a>.</p>
]]></content>
		
					<link rel="replies" type="text/html" href="https://snipe.net/2017/11/15/so-you-ran-composer-as-root/#comments" thr:count="0" />
			<link rel="replies" type="application/atom+xml" href="https://snipe.net/2017/11/15/so-you-ran-composer-as-root/feed/atom/" thr:count="0" />
			<thr:total>0</thr:total>
			</entry>
		<entry>
		<author>
			<name>snipe</name>
							<uri>https://snipe.net</uri>
						</author>

		<title type="html"><![CDATA[How iOS Helped Me Navigate My Mother to Safety During Hurricane Irma]]></title>
		<link rel="alternate" type="text/html" href="https://snipe.net/2017/09/14/how-ios-helped-me-navigate-my-mother-to-safety-during-hurricane-irma/" />

		<id>https://snipe.net/?p=5857</id>
		<updated>2017-11-15T06:44:21Z</updated>
		<published>2017-09-14T06:41:40Z</published>
		<category scheme="https://snipe.net/" term="Misc" /><category scheme="https://snipe.net/" term="hurricane" /><category scheme="https://snipe.net/" term="ios" />
		<summary type="html"><![CDATA[<p>Unless you&#8217;ve been living under a rock, you&#8217;ve heard about the gigantic hurricane that battered the Caribbean islands and Florida, and continues to travel up the east coast, affecting as far north as the Great Lakes. I live in San Diego, California, clear on the other side of the country, but my family just moved [&#8230;]</p>
<p>The post <a href="https://snipe.net/2017/09/14/how-ios-helped-me-navigate-my-mother-to-safety-during-hurricane-irma/">How iOS Helped Me Navigate My Mother to Safety During Hurricane Irma</a> appeared first on <a href="https://snipe.net">Snipe.Net</a>.</p>
]]></summary>

					<content type="html" xml:base="https://snipe.net/2017/09/14/how-ios-helped-me-navigate-my-mother-to-safety-during-hurricane-irma/"><![CDATA[<p>Unless you&#8217;ve been living under a rock, you&#8217;ve heard about the gigantic hurricane that battered the Caribbean islands and Florida, and continues to travel up the east coast, affecting as far north as the Great Lakes.</p>
<p>I live in San Diego, California, clear on the other side of the country, but my family just moved my mother from New Jersey to western Florida a month or so ago. When Irma&#8217;s path became clear, her town (as well as many others) were issued mandatory evacuations.</p>
<p>My mother is elderly and disabled, and has never been through a Florida-style hurricane before. She also has the single worst sense of direction of any human on the planet. I&#8217;m not kidding. She left in her car one day to go to the Home Depot, 10 miles away, and ran out of gas driving for seven hours &#8211; and still never found the Home Depot. I wish I was exaggerating. (She also thought the digital display on her car came with a &#8220;wind indicator&#8221; that could help with gas mileage based on the direction the wind was hitting the car. Never once occurred to her that it was a compass.)</p>
<p>I had been texting her in the days leading up to the shelter, with links to websites where she could track evacuation routes, check shelter statuses and mandatory evacuations.</p>
<p>In addition to being terrible with directions, she is also really stubborn. Runs in the family, I guess. So she opted not to evacuate when we urged her to, or when the mandatory evacuation came through for her area, and only decided days later as the storm was about to hit that <em>maybe</em> she should try to find a shelter.</p>
<p>&#8220;Great!&#8221; we thought. She mentioned that a bunch of other people in her neighborhood that had planned on staying had changed their mind and decided to head to the closest hurricane shelter, so we told her to hitch a ride with one of them. She needed a shelter that was pet-friendly and accessible, so that narrowed her options, but there were several within 30 miles of her that could accommodate pets. She said her neighbor told her of a highschool that was pretty close, so she was going to catch a ride there with other evacuees. Perfect. Whew.</p>
<p>A few hours pass, and we get a text from her, from the iPad I gave her a few years ago. (I could tell it was from her iPad, since the messages were blue on my phone, and she doesn&#8217;t have an iPhone.)</p>
<p><em>&#8220;Lost. Trying to get to HS.&#8221;</em></p>
<p>WTF???</p>
<p>Trying to keep calm, I reply <em>&#8220;Are you driving? Use Siri. Siri will give you directions. Pull over and put in the HS info. &#8220;</em></p>
<p>Her: <em>&#8220;No lectures. Couldn&#8217;t find a ride! Bye&#8221;</em></p>
<p>Me: <em>&#8220;Stay calm, pull over and let Siri give you turn by turn directions.&#8221;</em></p>
<p>I knew she had used Siri before, because she had remarked about how much she loved the iPad, and how much the &#8220;lady who says the directions out loud&#8221; was helpful. I guess she had never tried to use from anywhere but her house though, and assumed it wouldn&#8217;t work if home wasn&#8217;t her starting point.</p>
<p>Her: <em>&#8220;I no. But I am not home&#8221;</em></p>
<p>I looked up the address of the highschool on the Internet and pasted it to her. I explain that if she clicks on the address in iMessages, it should launch the map app and offer her directions. She said she tried that and it didn&#8217;t work. (I honestly have no idea what she did, but the situation was urgent, so I moved on to the next idea.) I then sent her the location directly from Apple Maps. Somehow she still couldn&#8217;t get that to work. Again, no idea, so moving on.</p>
<p>My fiancee and I were on our way home when all of this transpired, driving through the mountains outside of San Diego where reception gets a little spotty, so we decided to pull over. I could tell that she&#8217;s getting frustrated, and the clock is running out. I know she&#8217;ll just give up and go home. Or try to, rather. More likely she&#8217;d turn around to go home and still end up lost. So we pulled off in Alpine, CA &#8211; a perfectly adorable little town that looks right out of a storybook. We found a Starbucks (yes, my storybooks have Starbucks in them &#8211; don&#8217;t judge), I took out my laptop, which was thankfully at 100% charge and I called her.</p>
<p>At this point, Mom doesn&#8217;t know where she is, and she&#8217;s somehow not able to get any of the Apple Maps stuff to work. She thought maybe she didn&#8217;t have the right app, and I explained that Apple Maps comes with the iPad, so she definitely has it. I can hear her frustration growing. She&#8217;s tired, she&#8217;s in pain, and she wants to stop driving &#8211; and I&#8217;m running out of options.</p>
<p>I broke into her iCloud account to see if location services were enabled, so I could try to navigate her through Find My iPhone. They weren&#8217;t, but I was able to walk her through turning them on through the Settings menu on her iPad very quickly. Soon enough, her beacon popped up on the website. <em>Thank Glob</em>. We&#8217;re in business. Turns out, after driving around for two hours, she was 12 miles away from the shelter and only 15 miles from her home.</p>
<p>So, I knew where she was, but I also know how terrible she is at following directions. So I open Apple Maps on my laptop, and set up a split screen with her iCloud locator beacon and the directions from where she was currently parked. Refreshing the Find My iPhone page, I could guide her over the phone, telling her what to expect (&#8220;In about a minute, you&#8217;ll pass a Publix on your left&#8221;).</p>
<p>Success! Ten minutes later, she arrived at the highschool. Only to find the windows dark and the gates locked. I double-checked the shelter list I had been referencing, and it was never on the list to start with, so that entire trip was a wild goose chase. I can hear mom getting pretty upset at this point and I told her to stay calm, and that we&#8217;d find another one.</p>
<p>I don&#8217;t know Florida geography at all, but I used Apple Maps to find a few official pet-friendly shelter options that were close, while my fiancee parallel-pathed by calling them to make sure they had a vacancy. It <em>was</em>pretty late in the evacuation game, after all, and the odds were good that many shelters would be full by then. Most didn&#8217;t answer the phone, but that didn&#8217;t surprise us too much.</p>
<p>I find a place that&#8217;s 20 minutes away, and repeat the turn-by-turn process for her, refreshing her Find My iPhone page every minute or so, and then switching back to Apple Maps. I could hear Siri faintly in the background, so I think Apple Maps worked fine for her, she just couldn&#8217;t hear Siri on her iPad, even with the sound turned all the way up, since the iPad was on her passenger seat.</p>
<p>She arrived at the second shelter, only to be turned away. They were full. She started to cry, and explained to the shelter volunteer that she&#8217;s disabled and hasn&#8217;t taken her heart medicine yet, and begged him to let her in. He apologized and said he couldn&#8217;t. When she wouldn&#8217;t stop begging, her referred her to someone else at the shelter who might have more information.</p>
<p>We were in luck. The other shelter worker knew of another shelter that still had room. (I can hear all of this conversation on the phone, and asked her to hand the guy her phone so I could take down the address.)</p>
<p>So, back in the car she goes. This third place was about 15 miles away. Mom was pretty upset at this point, but I promised her I&#8217;d get her and her dog there safe and sound if she could just stick with me a few more minutes. Once again, turn by turn, two-screens up showing me where she is and where she&#8217;s going, to make sure I can catch it if she makes a wrong turn.</p>
<p>After an hour and 45 minutes, she pulls into the third shelter. My laptop is at 3%. I hear them ask for her driver&#8217;s license number and license plate number. She&#8217;s in.</p>
<p>I exhale.</p>
<p>My shoulders are sore from holding the phone in the crook of my neck, and I&#8217;m sunburned from sitting outside for almost two hours, but she&#8217;s finally safe at a shelter.</p>
<p>While this saga was far longer than it <em>should</em> have been, and far more complex than it <em>could</em> have been, the reality is that without iOS, I would not have been able to guide my mother <em>anywhere</em>, to a shelter <em>or</em> back home. We had nobody local who could have helped her, and while I hope to never have to go through that stress again, I marvel at the fact that I was able to remotely guide her to three different places I had never seen, in a way that was about as stress-free for her as it could have been.</p>
<p>I should really build an app for this. Maybe some Twilio integration so folks can get real-time Siri directions over the phone if they don&#8217;t have an iPhone and fancy bluetooth car stereo integrations. I&#8217;m not sure yet, but it&#8217;s got me thinking about ways we could use all of the awesome technology behind this stuff and make it more useful for the elderly, hard of hearing, directionally challenged, etc &#8211; especially during high stress situations. Maybe integrate it with some positive reinforcements if the driver is going the right way. &#8220;That&#8217;s it. You&#8217;re on the right track &#8211; just 5 more minutes!&#8221;</p>
<p>The post <a href="https://snipe.net/2017/09/14/how-ios-helped-me-navigate-my-mother-to-safety-during-hurricane-irma/">How iOS Helped Me Navigate My Mother to Safety During Hurricane Irma</a> appeared first on <a href="https://snipe.net">Snipe.Net</a>.</p>
]]></content>
		
					<link rel="replies" type="text/html" href="https://snipe.net/2017/09/14/how-ios-helped-me-navigate-my-mother-to-safety-during-hurricane-irma/#comments" thr:count="0" />
			<link rel="replies" type="application/atom+xml" href="https://snipe.net/2017/09/14/how-ios-helped-me-navigate-my-mother-to-safety-during-hurricane-irma/feed/atom/" thr:count="0" />
			<thr:total>0</thr:total>
			</entry>
		<entry>
		<author>
			<name>snipe</name>
							<uri>https://snipe.net</uri>
						</author>

		<title type="html"><![CDATA[Replace Your iPhone Alerts and Ringtones with Awesomeness for Free]]></title>
		<link rel="alternate" type="text/html" href="https://snipe.net/2017/08/15/replace-your-iphone-alerts-and-ringtones-with-awesomeness-for-free/" />

		<id>https://snipe.net/?p=5860</id>
		<updated>2017-11-15T06:49:05Z</updated>
		<published>2017-08-15T06:47:58Z</published>
		<category scheme="https://snipe.net/" term="Geek Life" /><category scheme="https://snipe.net/" term="Misc" />
		<summary type="html"><![CDATA[<p>I recently spent some time replacing all of the alerts and ringtones on my iPhone to be sound FX and music from my favorite NES games, and the quality of my life improved dramatically. I wanted to do this for two reasons, the first being to break the Pavlovian stress reaction I have when my [&#8230;]</p>
<p>The post <a href="https://snipe.net/2017/08/15/replace-your-iphone-alerts-and-ringtones-with-awesomeness-for-free/">Replace Your iPhone Alerts and Ringtones with Awesomeness for Free</a> appeared first on <a href="https://snipe.net">Snipe.Net</a>.</p>
]]></summary>

					<content type="html" xml:base="https://snipe.net/2017/08/15/replace-your-iphone-alerts-and-ringtones-with-awesomeness-for-free/"><![CDATA[<p>I recently spent some time replacing all of the alerts and ringtones on my iPhone to be sound FX and music from my favorite NES games, and the quality of my life improved dramatically.</p>
<p>I wanted to do this for two reasons, the first being to break the Pavlovian stress reaction I have when my phone makes a sound (&#8220;Ugh. Someone&#8217;s calling me.&#8221; &#8220;Ugh. What NOW??&#8221;).</p>
<p>The second is that I actually know it&#8217;s MY phone alerting in a room full of iPhone users. (&#8220;Is that me or you?&#8221;)</p>
<p>The process of making your own ringtones and alerts is easy, but it&#8217;s unfortunately more labor intensive than it should be. (Thanks, Apple.) I&#8217;ve found that it&#8217;s the least painful when you grab all of the sound FX you want to convert first, and then batch process them in one sitting.</p>
<h2>Start by finding the sounds/music you want to use</h2>
<p>Spend some time hunting down sounds you want to turn into ringtones/alerts. Ideally you want the downloads to be in mp3 format. They can be in other audio formats, but it can mean an additional conversion step that&#8217;s a pain in the ass.</p>
<p>Songs or game music can be fun for ringtones, but I tend to prefer the SFX. Mario grabbing a coin SFX for a text message alert, Mario dying for a ringtone, etc. Your mileage may vary, of course, but full songs need to be trimmed to 30 seconds or less, and I&#8217;m very lazy.</p>
<p>Some great sources for movie/TV/video game sound FX and music:</p>
<ul>
<li><a href="http://soundfxcenter.com/" rel="noopener">Sound FX Center</a> &#8211; good selection of core SFX, not just music</li>
<li><a href="https://www.sounds-resource.com/" rel="noopener">The Sounds Resource</a> (clunky UX, but huge selection, unfortunately sometimes in .wav format)</li>
<li><a href="http://www.superluigibros.com/sound-and-music" rel="noopener">Super Luigi Brothers</a> (huge collection, Mario Brothers only)</li>
<li><a href="http://www.vgmuseum.com/mrp/multi/mp3s.htm" rel="noopener">Mr. P&#8217;s Castlevania Realm</a> (Castlevania only)</li>
<li><a href="http://gamethemesongs.com/" rel="noopener">GameThemeSongs.Com</a> and <a href="http://televisiontunes.com/" rel="noopener">TelevisionTunes.Com</a></li>
<li><a href="http://www.mariomayhem.com/downloads/" rel="noopener">MarioMayhem</a></li>
<li><a href="http://noproblo.dayjo.org/ZeldaSounds/" rel="noopener">Legend of Zelda Sound FX</a></li>
</ul>
<p>There are tons more resources out there (and if you can&#8217;t find the one you&#8217;re looking for, reply to this post and I&#8217;ll try to help you find it).</p>
<p>Once you&#8217;ve downloaded the sounds/music you want, you can trim if necessary them in iTunes, Garageband, Quicktime, or any other audio editor.</p>
<h1>Convert the MP3 to a M4R (MPeg-4 Ringtone)</h1>
<p>You have a bunch of different options here, so choose whichever works for you.</p>
<h2>Via iTunes</h2>
<p>Start iTunes and find the song you want to convert. (It must be an MP3.)</p>
<ol>
<li>Click OK, then select the song in your songs listing, and go to File &gt; Convert &gt; Create AAC Version.</li>
<li>Click &#8220;Show in Finder&#8221; to view the new file in your filesystem. Drag the AAC version out of the iTunes folder and into the temp folder of your choice.</li>
<li>Change the file extension from .m4a to .m4r.</li>
<li>Repeat with as many files as you&#8217;d like to convert.</li>
</ol>
<h2><strong>Via Terminal using </strong><em><strong>Audio File Convert:</strong></em></h2>
<blockquote><p>afconvert -f m4af /path/to/file.mp3 /path/to/file.m4r</p></blockquote>
<h2><strong>Via Music Converter (Mac Only)</strong></h2>
<p><a href="https://itunes.apple.com/us/app/music-converter/id468990728?mt=12" rel="noopener">Music Converter</a> is a free MacOS app that lets you drag mp3s into the app and convert them to m4r files. There is a pro version that lets you bulk convert, but it&#8217;s not necessary if you only have a few files, or if you have a little patience</p>
<h1>Import into iTunes</h1>
<p>Once you&#8217;ve converted all of your files, drag the new .m4r files into iTunes, and it should show up in the ringtones section of your iTunes library. From here, you can sync it with your iPhone or iPad, and then access it in the Sounds section of your iPhone&#8217;s settings to use it for various notifications.</p>
<p><strong>Note: </strong>If they don&#8217;t sync automatically, connect your phone to your computer, launch iTunes, and make sure <strong>Sync Over Wifi</strong> is enabled. If they still don&#8217;t sync, click on your device in iTunes, then click on Ringtones, and make sure &#8220;<strong>Sync ringtones</strong>&#8221; is enabled.</p>
<p>The post <a href="https://snipe.net/2017/08/15/replace-your-iphone-alerts-and-ringtones-with-awesomeness-for-free/">Replace Your iPhone Alerts and Ringtones with Awesomeness for Free</a> appeared first on <a href="https://snipe.net">Snipe.Net</a>.</p>
]]></content>
		
					<link rel="replies" type="text/html" href="https://snipe.net/2017/08/15/replace-your-iphone-alerts-and-ringtones-with-awesomeness-for-free/#comments" thr:count="0" />
			<link rel="replies" type="application/atom+xml" href="https://snipe.net/2017/08/15/replace-your-iphone-alerts-and-ringtones-with-awesomeness-for-free/feed/atom/" thr:count="0" />
			<thr:total>0</thr:total>
			</entry>
		<entry>
		<author>
			<name>snipe</name>
							<uri>https://snipe.net</uri>
						</author>

		<title type="html"><![CDATA[Choosing a Model for Your Open Source Business]]></title>
		<link rel="alternate" type="text/html" href="https://snipe.net/2017/08/05/choosing-a-model-for-your-open-source-business/" />

		<id>https://snipe.net/?p=5863</id>
		<updated>2017-11-15T06:51:47Z</updated>
		<published>2017-08-05T06:49:49Z</published>
		<category scheme="https://snipe.net/" term="Business" /><category scheme="https://snipe.net/" term="Open Source" /><category scheme="https://snipe.net/" term="Software" /><category scheme="https://snipe.net/" term="foss" /><category scheme="https://snipe.net/" term="open source" />
		<summary type="html"><![CDATA[<p>When I explain to people that I run a business writing free, open source software, most people look at me like I&#8217;m an alien. Understandably so. It&#8217;s weird and confusing to those who aren&#8217;t knee-deep in it. It works, and it&#8217;s great when it works, but there are some unique challenges that this type of [&#8230;]</p>
<p>The post <a href="https://snipe.net/2017/08/05/choosing-a-model-for-your-open-source-business/">Choosing a Model for Your Open Source Business</a> appeared first on <a href="https://snipe.net">Snipe.Net</a>.</p>
]]></summary>

					<content type="html" xml:base="https://snipe.net/2017/08/05/choosing-a-model-for-your-open-source-business/"><![CDATA[<p>When I explain to people that I run a business writing free, open source software, most people look at me like I&#8217;m an alien. Understandably so. It&#8217;s weird and confusing to those who aren&#8217;t knee-deep in it. It works, and it&#8217;s great when it works, but there are some unique challenges that this type of business introduces &#8211; namely, how do you prevent your business from competing against your free product? How do you produce an excellent open source product while still offering something of enough value to make it worth it for people to pay you?</p>
<p>If you run a popular open source software project (or are considering starting one), and have ever kicked around the idea of trying to turn it into a business, there are some things you should consider first.</p>
<p>Let&#8217;s explore some of the more common options&#8230;</p>
<h2>Types of Open Source Business Models</h2>
<p>You have several models to choose from, the most popular being <strong>dual licensing</strong>, <strong>software as a service</strong>, <strong>consulting</strong>, <strong>freemium</strong>, <strong>donation-based funding</strong>, and <strong>crowdfunding</strong>.</p>
<h3>Dual-Licensing</h3>
<p>Dual-licensing allows you to offer your software under an open source license, but also a separate, proprietary license, for example Oracle&#8217;s MySQL database which is dual-licensed under a commercial proprietary license as also under the GPLv2. A common tactic here is to draw users in with your free version, and then up-sell them to enterprise features or support.</p>
<p>You can <a href="https://en.wikipedia.org/wiki/Multi-licensing" rel="noopener">learn more about multi-licensing here</a>.</p>
<h3>Software as a Service (SaaS)</h3>
<p>Selling online subscriptions for hosted versions of your software is a sometimes complex but viable solution. WordPress, for example, gives away their source code at WordPress.Org, but users who don&#8217;t want to host their own blog can sign up for a free or paid account at WordPress.Com.</p>
<p>If your software is multi-tenant (meaning it shares one instance/database for multiple top-level users), this can be an easier proposition, but multi-tenancy can also bring additional technical overhead and support issues with open source products. It can also raise security concerns with enterprise customers, since shared resources can mean potential data leakage if a bug or exploit occurs in the code that controls what user data belongs to which customer account.</p>
<p>While I don&#8217;t want to get too in the weeds with respect to software licenses in this article, I do feel there is a key difference between the <a href="https://tldrlegal.com/license/gnu-lesser-general-public-license-v3-(lgpl-3)" rel="noopener">GPL</a> and the <a href="https://tldrlegal.com/license/gnu-affero-general-public-license-v3-(agpl-3.0)" rel="noopener">AGPL</a> that&#8217;s important to note for the SaaS model.</p>
<p>Under the GPL, someone can take your source code, make changes to it and create a SaaS business around it, and they won&#8217;t be required to disclose their code changes. Under the AGPL, someone can take your source code, make changes to it and create a SaaS business around it but they are REQUIRED to disclose their code changes.</p>
<p><strong>That includes your changes to your own AGPL software</strong>. If someone pays us to build a feature for their Snipe-IT install, we have to release those changes or we&#8217;d be in violation of our own license. The way we handle this is by explaining to customers that we can build features, but any feature we build must be released to the community project, so we only build features that make sense for the project as a whole and that will benefit all users.</p>
<p>Providing SaaS services without releasing the open-source software itself conforms with most open-source licenses (with exception of the <a href="https://www.gnu.org/licenses/agpl-3.0.html" rel="noopener">AGPL</a>), but I would argue isn&#8217;t aligned with the spirit of open source software. From <a href="https://en.wikipedia.org/wiki/Business_models_for_open-source_software" rel="noopener">Wikipedia</a></p>
<blockquote><p>Because of its lack of software freedoms, Richard Stallman calls SaaS &#8220;inherently bad&#8221; while acknowledging its legality. The FSF [Free Software Foundation] called the server-side use-case without release of the source-code the &#8220;ASP loophole in the GPLv2&#8221; and encourage therefore the use of the Affero General Public License which plugged this hole in 2002.</p></blockquote>
<h3>Consulting / Professional Services</h3>
<p>Consulting can mean building additional features, providing training, or support, building plugins or themes, etc.</p>
<p>Other professional services can include paid online support training courses, distribution of physical installation media or binaries, for example as RedHat and IBM do.</p>
<h3>Freemium</h3>
<p>Freemium is a harder model to implement in open source, since the source is, well, <em>open</em>, but we do see this in things like WordPress. While WordPress itself uses the SaaS model, they also offer plugins like Jetpack, which is free for the basic version but users can upgrade to premium services for a subscription fee.</p>
<p>You can develop proprietary modules, extensions, add-ons, plugins themes, etc for your open source project (assuming it&#8217;s architected in a way where that makes sense), but it&#8217;s important to keep in mind the potential software license implications here. From <a href="https://en.wikipedia.org/wiki/Business_models_for_open-source_software" rel="noopener">Wikipedia</a>:</p>
<blockquote><p>Some companies sell proprietary but optional extensions, modules, plugins or add-ons to an open-source software product. This can be a &#8220;license conform&#8221; approach with many open-source licenses if done technically sufficiently carefully. For instance, mixing proprietary code and open-source licensed code in statically linked libraries[45] or compiling all source code together in a software product might violate open-source licenses, while keeping them separated by interfaces and dynamic-link libraries might often adhere to license conform.</p></blockquote>
<h3>Donation-Based / Bounty-Based</h3>
<p>While you can absolutely run a business based off of donations or feature/bugfix bounties, I wouldn&#8217;t recommend this for smaller projects. The lack of reliability in income makes it difficult to plan a business around. For smaller projects, it might make more sense to find a corporate sponsor to provide more consistent income.</p>
<h3>Pre-order/Crowdfunding/Reverse-Bounty Model</h3>
<p>This method can work, but it requires a lot of marketing and word-of-mouth, and the possibility definitely exists that it could flat-out fail if you&#8217;re unable to drum up enough excitement about your project.</p>
<p>We tend to see pre-order/crowdfunded scenarios as a one-off or two-off project-based campaign and I&#8217;m not confident in the long-term viability of this as a business model (although I&#8217;m not saying that it couldn&#8217;t. I just don&#8217;t know.)</p>
<h2>How will your business work?</h2>
<p>Each of these models have pros and cons, and you&#8217;ll need to put serious thought into each of them to determine what will work for you based on the nature of your software, the strengths and weaknesses of the team or organization working on the project, and the software license(s) your software is released under.</p>
<p>For example, if you&#8217;re a programmer without experience in configuring, deploying, maintaining, and managing servers and SLAs, a software-as-a-service (SaaS) model might not be a good fit unless you can partner up with someone with experience there or can secure funding for managed services. It <em>is</em> possible to do, but you&#8217;re setting yourself up for failure (and a lot of pissed off customers).</p>
<p>When I decided to take the leap and turn <a href="https://snipeitapp.com/" rel="noopener">Snipe-IT</a> (my open source IT asset management solution) into a business, I had to spend some time thinking about how my business could (and more importantly <em>should</em>) work. The first question in figuring that out is&#8230;</p>
<h3>Who uses your software and what problem can your business solve for them?</h3>
<p>You can&#8217;t really have a discussion about business models in open source without determining who uses your software and what pain points they might have.</p>
<p>In my case, our user base is largely small to medium-sized businesses. My software is web-based, which made it difficult to install for IT managers that had plenty of experience deploying desktop applications but little to no experience running web servers. This meant there was a pain-point we could solve for them as a SaaS product.</p>
<h3>What do you WANT to be doing?</h3>
<p>The most straightforward model is consulting. You still run your open source project the way you normally would, but you make additional money (either solo or by building a consulting company around it) doing training, building features, etc for companies that want more.</p>
<p>That&#8217;s a perfectly viable (and successful) model for a lot of companies, but it wasn&#8217;t what <em>I</em> wanted. I&#8217;ve been a consultant, and while I enjoyed the work at the time, I&#8217;m simply not interested in consulting anymore. I don&#8217;t want to do consulting myself, and I don&#8217;t want to run a consulting company.</p>
<p>This is your <em>business</em>. It&#8217;s going to take heroic effort and time to build it, grow it, and maintain it. It&#8217;s critical that you start with something you <em>want</em>to be doing. Sometimes that means that the most obvious model isn&#8217;t the right model for you.</p>
<h2>Other Considerations</h2>
<p>Before you jump in with both feet, there are a few more issues you need to think about.</p>
<h3>Technical decisions are made more complex</h3>
<p>Developing open source software is infinitely more difficult and complex than developing private, proprietary software where you control the environment, the versions that are used in production, and the upgrade process from start to finish.</p>
<p>To make things more complicated, once you decide to open source your product, or to turn your open source product into a business, you have to figure out how to integrate your business into your product without compromising the open source version.</p>
<p>For example, with Snipe-IT, there are things we could add to the source that would make it easier for us to remind users when their credit card is expiring soon, so they don&#8217;t lose access to their hosted instance &#8211; either using a drop-in service like <a href="https://stunning.co/r/863TQFMG" rel="noopener">Stunning</a>, or by adding code that calls back to our corporate APIs to check on billing status. That would be better for our business, but would require we add a bunch of proprietary code into our open source product, so we don&#8217;t do it.</p>
<p>Additionally, there are technical solutions we would use that would make our product better (for example, a simple queuing system for large imports), but would make it more difficult for open source users to install. If an IT manager can&#8217;t handle setting up a web server, what are the odds they will know how to set up Redis or RabbitMQ? Each dependency adds an additional barrier to open source users. For some projects, that&#8217;s okay, but for us, knowing what our open source users&#8217; pain points are, it&#8217;s not worth it.</p>
<p>And let&#8217;s face it, when you add layers of complexity, you end up with more support requests. Which leads us to the next point&#8230;</p>
<h3>Support Efforts x2</h3>
<p>This seems obvious, but I can&#8217;t stress it enough. When your business is open source software, <strong><em>you still have to maintain support in the open source community</em></strong>. That means that you now have paying customers to support, and a free community to support.</p>
<h3>Sometimes, you are your own competition</h3>
<p>For Snipe-IT, the fact that we release so frequently is a blessing and a curse. It&#8217;s great because it means new features and bugfixes are always shipping, but it also means that if you run your own version, you&#8217;re going to be updating a lot. Some people don&#8217;t want to deal with that hassle. Other people just don&#8217;t want to bother with running a server just for their asset management system.</p>
<p>We&#8217;ve managed to find the sweet spot of price and value that seems to make sense for our customers so that we&#8217;re growing every month at a pace that works for us.</p>
<p>We do occasionally lose paying customers to our own free product. Folks who signed up for an account and love the product but decide they want to host it in-house to save money absolutely exist, but interestingly, we have <em>more</em> customers who started with a local install and decided to go with us for a SaaS solution than we have customers defecting to host it themselves. And frankly, those are my favorite customers, since they&#8217;ve already tested the product, they know what it does (and doesn&#8217;t do), and now just want it implemented in a way that makes their life easier.</p>
<p>We do occasionally get free users who accuse of making the installation hard deliberately to drive people to the hosted version (LOLOMGWUT), which is super frustrating to hear someone say, but we try not to let it bother us too much. We bust our asses building a great open source product. Everything else is just infrastructure automation.</p>
<h3>Running a business is WORK! (OMG Who Knew??)</h3>
<p>The other thing to consider is that this will be a real business, and not everyone is prepared or willing to handle all that entails. It&#8217;s a giant pile of paperwork and headaches &#8211; totally worth it, IMHO, but not everyone wants to deal with that. Payroll, taxes, marketing, accounting, benefits, employee agreements and employee handbooks all come with running a business.</p>
<h2>What worked for me</h2>
<p>I ended up going with a hybrid model. The majority of Snipe-IT&#8217;s revenue comes from our SaaS product, but we do also offer pro support options for folks who want to host the product themselves, usually due to security policies forbidding SaaS products handling certain types of data.</p>
<p>Our pro support plan is actually more expensive than our hosted option, because when we host the product ourselves, we know the environment well and can easily troubleshoot issues. When supporting an install where we sometimes literally can&#8217;t even access the front-end, support takes a lot more time.</p>
<p>Running your own business, especially one based on open source software, is enormously rewarding, but it&#8217;s a big step and requires a lot of commitment. Make sure you put the time in ahead of time to determine which model, if any, is right for you.</p>
<p>The post <a href="https://snipe.net/2017/08/05/choosing-a-model-for-your-open-source-business/">Choosing a Model for Your Open Source Business</a> appeared first on <a href="https://snipe.net">Snipe.Net</a>.</p>
]]></content>
		
					<link rel="replies" type="text/html" href="https://snipe.net/2017/08/05/choosing-a-model-for-your-open-source-business/#comments" thr:count="0" />
			<link rel="replies" type="application/atom+xml" href="https://snipe.net/2017/08/05/choosing-a-model-for-your-open-source-business/feed/atom/" thr:count="0" />
			<thr:total>0</thr:total>
			</entry>
	</feed>
