https://sudoedit.comsudoedit.com!2024-03-19T13:12:28.333634+00:00sudoedithiddenpython-feedgenLatest Blog Posts
{{posts | limit:5}}
Contact Information
The best way to chat with me is to send an email! PGP.
Add me on Mastodon @sudoedit@mastodon.socia...https://sudoedit.com/clipping-walters-nails/Clipping Walter’s Nails2024-02-29T01:02:16.799097+00:00sudoedithidden<p>One of the things I neglected to do when Walter was a puppy was to desensitize him to the nail clippers.</p>
<p>Getting him to sit still so I can clip his nails has always been hard, but now that he’s close to 2 years old and nearly 100 pounds it’s damn near impossible to get the clippers anywhere near his paws.</p>
<p>The fact that he tends to be a pretty handsy pup doesn’t help things.</p>
<p>When he wants something from you he’ll start with a little nose bump, but if that doesn’t get your attention the next step is always to put his paws on your arm, or leg, or feet, or face… whatever the paw happens to land on.</p>
<p>Once those razor sharp talons touches your skin you end up with some pretty gnarly scars. Growing up I was always told that “Chicks dig scars”… but I’m married and I couldn’t care less what chicks dig anymore 🤣. I don’t dig getting lacerated by dirty doggy claws!</p>
<p>So, the claws gotta go - but that’s easier said than done with 100 pounds of fur, teeth, and claws that don’t see the problem with long finger nails.</p>
<h2 id="how-did-this-happen">How did this happen?</h2>
<p>A couple things sort of collided to make me slack off on conditioning Walter to be unafraid of the nail clippers when he was younger.</p>
<ol>
<li>His nails are black, which means it’s nearly impossible to see the quick inside his nails. Which makes it hard to know if you’re cutting too short till it’s too late.</li>
<li>For some reason he always seemed to suspect that I didn’t know what I was doing with those things, and would run off whenever I came within 3 feet of him with those clippers.</li>
</ol>
<p>So I needed a good plan.</p>
<h2 id="the-brain-washing-plan">The brain washing plan</h2>
<p>With that in mind I’ve developed a brain washing plan to get Walter to not just be unafraid of the clippers, but to be excited to see them and play the “paw” game when they come out.</p>
<p>Most days around lunch time I take a few minutes to do some simple training with Walter. Sit, Stay, Down, Touch, Play Dead, Pick up your toys, etc.</p>
<p>Since Monday last week, I’ve started each of these sessions by getting the nail clippers out with the treats and the clicker.</p>
<p>Walter knows that when he sees the clicker and the treats, we are about to play some games.</p>
<p>So now when I say “sit” I’m holding the clippers where he can see them. When I say “down” I put the clippers down near his feet.</p>
<p>The clippers come out only when we are playing these games and they go away as soon as the games are over.</p>
<p>Now, you remember how I said that Walter can get pretty handsy when he’s frustrated? I’m going to use that to my advantage here.</p>
<p>Walter already knows the cue “High Five”, I put my hand up and he bumps it with his paw. I’ve transformed that “high five” into the cue “paw” over the last few days.</p>
<h3 id="heres-how-it-works">Here’s how it works</h3>
<p>First, I cue Walter to sit</p>
<p>Next, we do a “high five” because he knows that one, and is guaranteed to get a reward.</p>
<p>Then I change things up and put my hand out flat and just look at him.</p>
<ul>
<li>At first he would look at me expecting something.</li>
<li>Then he would get a little flustered and bump my hand with his nose.<ul>
<li><strong>CLICK! TREAT!</strong></li>
</ul>
</li>
</ul>
<p>Why click at this stage? Well because he showed interest in my hand which is part of what I want. Walter (being a dog) doesn’t speak English so I need to give him clues about what I want.</p>
<p>This is called “shaping” we start with a general behavior and then shape it into what we want.</p>
<p>Anyway, back to the brain washing plan.</p>
<p>Once we’ve done this exercise a few times, and Walter has figured out that bumping my hand gets him a click, I stop clicking when he does it.</p>
<p>Remember something else I said about Walter? When he wants something he’ll bump you with his nose, and then if you don’t get the picture <strong>he punches you with his sharp ass paws.</strong></p>
<p>I know this, but he doesn’t know that I know this. So I wait, with my hand out flat and eventually he smacks it with his paw. <strong>CLICK!</strong> and <strong>LOTS OF TREATS!</strong></p>
<p>At this point, he’ll probably give me a puzzled look. WTF was that human? A little head tilt maybe. It’s fun to see the wheels turning in head “why would that make the bearded bald man click?”</p>
<p>Then I do it again we start with “high five”. Easy <strong>click</strong> treat.</p>
<p>Again, I hold out my hand flat. Walter looks at it, maybe whines, hits it with his nose, no click.</p>
<p>Frustration!!! Paw slap <strong>CLICK! TREATS!</strong>. AND I SAY “PAW”.</p>
<p>Associating the cue “Paw”, with the click and treat.</p>
<p>All the while I’ve got the clippers lying next to him.</p>
<p>Over the last day or two I hold one hand out and the other has the clippers where he can see them. Now instead of getting a click as soon as he slaps my hand, I make him rest his paw in my hand for a few seconds, then:</p>
<p><strong>CLICK! TREAT!</strong></p>
<p>Starting tomorrow I’m going to add in placing the clippers on his paw before he gets a click.</p>
<p>One thing to note though is that when you do try to progress between more specific behaviors when you are shaping a complex task like this, is that you have to be paying attention to your dog. If they aren’t getting it you need to think about what exactly you are asking them to do, and all the steps that might take.</p>
<p>Even something as simple as getting a dog to put his paw in your hand on cue isn’t simple. Remember they don’t speak English, and I’m lucky in the case because my dog loves to hit me with his paws and I can use that to my advantage.</p>
<p>You might consider that you are asking too much too soon and need to continue to reinforce earlier behaviors in the chain until the dog gets it every time, or even better is anticipating it.</p>
<p>So if touching him with the clippers tomorrow results in a sudden pull back or breaks his sit, then I know I’m asking for too much and I’ll dial it back. I’ll reinforce what he knows. Put paw in hand and wait. Then maybe put paw in hand and see clippers.</p>
<p>All the while I’ll be shoveling out treats much faster than you think I should.</p>
<p>I’m not sure when I’ll get to the point where I can clip one of those daggers he calls finger nails, but I’m sure the first one will be done when I’ve got some spare meat balls, and he’ll get a good reward after each and every nail he lets me clip.</p>
2024-02-29T00:25:13.037032+00:00https://sudoedit.com/firefox-ai/I Don’t Want AI in Firefox2024-02-15T01:43:29.611367+00:00sudoedithidden<p>Mozilla just announced another <a href="https://techcrunch.com/2024/02/13/mozilla-downsizes-as-it-refocuses-on-firefox-and-ai-read-the-memo/?guccounter=1">round of layoffs</a>.</p>
<p>This time around 60 people have been let go so that the company can focus on Firefox and AI.</p>
<p>While I’m glad to hear that Mozilla wants to focus in on Firefox and improve the browser, I’m not even a little excited about AI integration.</p>
<p>Beyond not excited, I’m a little disappointed to see them moving in that direction at all.</p>
<h2 id="ai-creates-unnecessary-suffering">AI creates unnecessary suffering</h2>
<p>I have a lot of ethical problems with the way AI’s are being trained. Without going into all the ways that AI is stealing from Artists, Authors, and other Creators.</p>
<p>The most prominent concern I have at the moment is how AI companies exploit human workers in Africa for their content moderation.</p>
<ul>
<li><a href="https://www.theguardian.com/technology/2023/aug/02/ai-chatbot-training-human-toll-content-moderator-meta-openai">‘It’s destroyed me completely’: Kenyan moderators decry toll of training of AI models</a></li>
<li><a href="https://time.com/6247678/openai-chatgpt-kenya-workers/">Exclusive: The $2 Per Hour Workers Who Made ChatGPT Safer</a></li>
</ul>
<p>The fact that so many people are essentially being abused for a product that nobody really needs is hard to justify.</p>
<p>My hope would be that Mozilla has a plan to reduce that suffering, and not just a marketing strategy to explain it away. But I doubt it.</p>
<h2 id="ai-is-a-privacy-nightmare">AI is a privacy nightmare</h2>
<p>Unless Mozilla has a plan to implement an AI that runs on a local machine, (which is practically speaking, impractical) then they don’t have any choice other than to send your data to someone on the internet for processing.</p>
<p>Even if it’s encrypted in transit, and on disk, that data has to be decrypted to be understood by the machine processing it. What happens to that data between the time it’s decrypted and the time the machine spits out its results is anyones guess.</p>
<p>Which means that the things you are doing in your browser will be even more open to exploitation than they already are.</p>
<p>If they do implement AI in the browser it needs to be an opt in feature, not opt out.</p>
<h2 id="is-mozilla-just-chasing-the-next-big-thing">Is Mozilla just chasing the next big “thing”?</h2>
<p>I hope not but let’s take an honest look at their recent history of hype chasing.</p>
<h3 id="mozilla-vpn-vpns-are-mostly-just-hype">Mozilla VPN - VPN’s are mostly just hype.</h3>
<p><a href="https://gist.github.com/joepie91/5a9909939e6ce7d09e29">Don't use VPN services.</a></p>
<p>The only time you need a VPN is when you need to connect to a private network that is behind a firewall. I.E. You need access to your home or work network from a remote location.</p>
<h3 id="mozilla-hubs">Mozilla Hubs.</h3>
<p><a href="https://hubs.mozilla.com">Mozilla Hubs</a> is some kind of 3D virtual meeting space where you can interact with an avatar of someone you work with… Or something... I don’t know, it’s weird and obviously just chasing the metaverse hype.</p>
<h3 id="mozilla-ai">Mozilla AI</h3>
<p><a href="https://www.mozilla.ai/">Mozilla AI</a></p>
<p>I don’t know what Mozilla AI is. If you visit the link above this sentence you will get a site that is strung together by a bunch of buzzwords and corporate jargon that can mean anything you want it to mean.</p>
<h2 id="so-what">So what?</h2>
<p>So I don’t know what, but I’m getting pretty frustrated by the horrible management decisions coming out of Mozilla these days, and the stagnation of Firefox as a browser.</p>
<p>I’m not one to call for a fork of anything as complex as Firefox, especially because I have neither the skill nor the time to give any significant help to such a project.</p>
<p>But If there is any hope of salvaging Firefox I’m starting to think the only way to really save it would be to create an organization that is modeled on the Debian project and fork it.</p>
2024-02-15T01:37:44.527550+00:00https://sudoedit.com/move-to-bear-blog/Moving to bear blog2024-01-27T19:44:04.533974+00:00sudoedithidden<p>Over the last year or so I’ve had this blog running on <a href="https://pages.cloudflare.com/">Cloudflare Pages</a> using a static site generator called <a href="https://gohugo.io/">Hugo</a>.</p>
<p>Everything has been working out just fine for the most part, but lately I’ve been wanting to change my blog theme to something a little more simplistic and I’ve found it difficult to migrate my blog to a new theme in Hugo.</p>
<p>I’m sure if I spent enough time with it I could figure it out, but I’m at point in my life right now where I don’t really want to invest as much time in learning the ins and outs of a new Hugo theme. I’d rather not take on the burden of managing anything other than the actual writing when it comes to blogging.</p>
<p>That’s why I’ll be moving this blog over to <a href="https://bearblog.dev">Bear Blog</a> in the next couple days. Maybe even tomorrow if I finish everything up.</p>
<p>I have a little bit more work to do refining the blog over there and then I’ll cut over the DNS and hopefully all the magical internet goodness will kick in and you’ll all end up at the new site with no broken URLS…</p>
<h2 id="actually-i-lied-there-will-be-one-broken-url-rss">Actually I lied there will be one broken URL… RSS</h2>
<p>Unfortunately, if you follow me with rss you will likely see the feed break when I do the cut over. When that happens the new feed should show up as sudoedit.com/feed/</p>
<h2 id="preview-of-the-site">Preview of the site</h2>
<p>If you want to get a sneak peak at new blog I’ve got a semi-mostly-almost complete version of the new blog running here <a href="https://sudoedit.bearblog.dev/">https://sudoedit.bearblog.dev/</a></p>
<p>#blog/written</p>
2024-01-27T19:42:08.936368+00:00https://sudoedit.com/time-box-sudo/Time boxed sudo2024-01-27T19:44:00.601378+00:00sudoedithidden<p>Something I needed to do a few days ago was give someone temporary sudo privileges on a machine.</p>
<p>Knowing how forgetful I can be I didn’t want to add the access and then hope I remembered to remove it later.</p>
<p>This sort of thing is not uncommon and often times ends up with a comment in a sudoers file that looks something like this:</p>
<div class="highlight"><pre><span></span><span class="c1"># Temporary sudo access for 30 days added by Luke 2004-01-01</span>
somedude<span class="w"> </span><span class="nv">ALL</span><span class="o">=(</span>ALL<span class="o">)</span><span class="w"> </span>NOPASSWD:ALL
</pre></div>
<p>The temporary 30 day access for some dude who no longer works here lasted for 20 years… so far…</p>
<p>I suppose technically all access is temporary access in the grand scheme of things so maybe this isn’t so bad? 🤣</p>
<h2 id="a-better-way-to-enforce-temporary-access">A better way to enforce temporary access</h2>
<p>Use the <code>NOTBEFORE</code> and <code>NOTAFTER</code> parameters in sudo.</p>
<p>A better way to time box this kind of access and make sure that a forgetful sysadmin doesn’t end up giving temporary access that lasts for 20 years would look like this:</p>
<div class="highlight"><pre><span></span><span class="c1"># Temporary sudo access for 30 days added by Luke 2024-01-01</span>
somedude<span class="w"> </span><span class="nv">ALL</span><span class="o">=(</span>ALL<span class="o">)</span><span class="w"> </span><span class="nv">NOTBEFORE</span><span class="o">=</span><span class="m">202401010800</span><span class="w"> </span><span class="nv">NOTAFTER</span><span class="o">=</span><span class="m">202401311700</span><span class="w"> </span>NOPASSWD:ALL
</pre></div>
<p>This way the server will automatically add sudo access on January 1, 2024 at 8am and remove that access on January 31, 2024 at 5pm. That way you aren’t reliant on anyone’s memory.</p>
<p>Go forth and give temporary access.</p>
<p>#blog/written</p>
2024-01-24T00:00:00+00:00https://sudoedit.com/plausible-test/Testing Plausible Analytics for the next month.2024-01-27T19:43:55.903901+00:00sudoedithidden<p>I’ve never used analytics on this blog. But lately I’ve been curious to see how many page views I get, so I started looking around at my options. I host this site on <a href="https://pages.cloudflare.com">Cloudflare Pages</a> , which is a free service as long as you have something like less than 100 domains and don’t need to do more that one website build at a time. Which I will never exceed.</p>
<p>Cloudflare offers some basic analytics for free but I’ve had my doubts about how accurate it is. At one time it was showing that I get 500 visitors a day, and I’d honestly be surprised to find out that I’ve had 500 visitors in 3 years 🤣.</p>
<p>While looking into analytics I kept privacy at the top of my list so Google was always out of the picture. I wanted to make sure that if I implement analytics that it’s done in a way that respects the privacy of my readers.</p>
<p>After that I needed to find something that was affordable.</p>
<p>So with that in mind I’m giving <a href="https://plausible.io/">Plausible</a> a try since they have a 30 day free trial, and after that I’ll probably be just fine with the $9 a month option for the foreseeable future.</p>
<p>Right now I don’t spend much on this blog so if it turns out to be a worthwhile service and I decide to keep it I’ll update my privacy page to include it. If you’re the curious sort you can read about how they are different from Google Analytics. <a href="https://plausible.io/privacy-focused-web-analytics">Privacy focused Google Analytics alternative</a></p>
<p>One cool feature that I found with Plausible, is that I can publicly share my blogs stats.</p>
<p>At the time of writing I’ve had 5 (unique visitors) 2 of them are me. One from each of my laptops to see if it was working.</p>
<p>Take a look at my dashboard from the link below if you’re curious.
<a href="https://plausible.io/sudoedit.com/">Plausible dashboard for sudoedit.com</a></p>
<p>#blog/written</p>
2024-01-15T00:00:00+00:00https://sudoedit.com/load-a-clicker/How to load a clicker for dog training.2024-01-20T02:37:02.586083+00:00sudoedithidden<h2 id="positive-training-only">Positive training only</h2>
<p>I'm not a certified anything trainer but I know a couple things.</p>
<p>If you treat an animal well, it can develop into a confident and loving companion.</p>
<p>If you treat an animal poorly it'll be anxious, fearful, and possibly violent. And you'll be an asshole.</p>
<p>If you've heard of the Alpha or Dominance theories in dogs, I would encourage you to re-evaluate what you've learned with all the latest research on positive reinforcement for training.</p>
<h3 id="dominance-theory-in-dogs-and-wolves-has-been-debunked-for-many-years-your-dog-is-not-trying-to-be-the-alpha">Dominance theory in Dogs (and Wolves) has been debunked for many years. Your dog is not trying to be the Alpha.</h3>
<p><a href="https://www.whole-dog-journal.com/behavior/debunking-the-alpha-dog-theory/">Debunking the “Alpha Dog” Theory</a></p>
<p><a href="https://slate.com/technology/2021/09/cesar-millan-dominance-theory-dog-training.html">You Are Not the Boss of Your Dog</a></p>
<h2 id="what-is-clicker-training">What is clicker training?</h2>
<p><a href="https://www.clickertraining.com/node/153">History of Clicker Training I</a></p>
<p>Using a clicker (a device that makes a "click" sound) is a highly effective way to communicate desirable behaviors with your dog.</p>
<p>Or any other mammal from what I've read, including cats.</p>
<p>The basic idea is this.</p>
<ol>
<li>Dog does something you like.</li>
<li>You signal to the dog that they are going to be rewarded. (i.e. the click)</li>
<li>Dog gets reward.</li>
<li>Dog will associate the behavior with the marker (click) and replicate the behavior.</li>
</ol>
<p>The click is generally thought of as a marker. You are marking an action that will result in a reward, thus reinforcing the value of that action. Which should incentivize the dog to do that action again.</p>
<p>A click could be replaced with a word or any other noise or visual cue if the dog is deaf, but I'll talk about why I like to use a click or a whistle a little bit later.</p>
<p>I don't have the expertise to advise on training deaf dogs so I'll leave that alone.</p>
<h2 id="that-sounds-all-well-and-good-but-how-does-the-dog-know-that-a-click-is-going-to-mean-a-reward">That sounds all well and good but how does the dog know that a click is going to mean a reward?</h2>
<p>You're right dogs aren't born speaking a clicker language. They don't start out knowing that hearing a click noise means a reward is coming. There's nothing magic going on here.</p>
<p>Teaching a dog to understand "click = treat" is the fun part, because it involves letting the dog use its own judgement, and it doesn't really take that long for them to figure it out.</p>
<p>The process is called "loading the clicker". It's probably the easiest thing you'll do all day.</p>
<h2 id="how-to-load-a-clicker">How to load a clicker</h2>
<p>I'm going to pretend that you have a clicker (use a mechanical pen if you don't have one).</p>
<ol>
<li>Go get some delicious treats.</li>
</ol>
<ul>
<li>For now don't get kibble or even training treats, cut up a hotdog into small pieces or bacon bits, or left over steaks, something the dog will recognize as high value.</li>
</ul>
<ol start="2">
<li>Go find your dog, if they didn't already find you while you were cutting up those awesome treats.</li>
<li>Hold the clicker behind your back, put treats in your other hand, and click.</li>
<li>Immediately after the click give them a bit of the treat.</li>
<li>Repeat this for a while - it doesn't matter what the dog is doing at this point don't try to make them sit or lay down or perform any sort of behavior. Just click, treat, repeat over and over.</li>
<li>Watch your dog for some bit of understanding.</li>
</ol>
<ul>
<li>After a probably short time (a couple minutes usually) click and wait a second or two. If your dog looks for the treat then you know you've built an association. If not keep clicking and treating checking every so often to see if they look like they are expecting something when they hear the click.</li>
</ul>
<ol start="7">
<li>Now you have loaded the clicker and are ready to begin training.</li>
</ol>
<p>Now that you've loaded the clicker you have a way to mark a behavior that you like and want to see more of.</p>
<h2 id="one-more-quick-rule-that-can-never-under-any-circumstance-be-violated">One more quick rule that can never, under any circumstance be violated.</h2>
<p>Once the dog has associated the click with a reward, you MUST reward the dog everytime you click, even if it was an accident, even if 2 milliseconds after you clicked the dog did something it shouldn't do. Every click gets a treat.</p>
<p>Further you should click far more often that you think you should. Most of what we will be doing is shaping behaviors - but that's beyond this post. For now don't worry about giving too much, the more rewards you give out the more your dog will want to pay attention to you and that is probably 90% of the problem when it comes to training most dogs.</p>
<h2 id="why-a-click-or-whistle-and-not-a-word">Why a click or whistle and not a word?</h2>
<p>I'm only speaking for myself here, and there are plenty of real dog trainers out there that might disagree. And truth be told I do often use the word "Good!" in a high pitch and happy voice to mark behaviors, I loaded that word in the same way that I loaded the click.</p>
<p>Here's why I think it's important to use a clicker.</p>
<ol>
<li>It's faster than you can speak.</li>
</ol>
<ul>
<li>At least at first the clicks need to be precise. You'll get it wrong and it'll be frustrating but you get better with time. A quick squeeze of the clicker will always be faster than using your voice. It's probably why they use a clicker in Jeopardy.</li>
</ul>
<ol start="2">
<li>It doesn't convey emotion.</li>
</ol>
<ul>
<li>Dogs respond to emotion, they watch us more often than we realize and they know when we are happy, sad, angry, etc. The clicker and the whistle sound the same no matter how we feel and that makes it easier for the dog to understand the marker.</li>
</ul>
<ol start="3">
<li>This is most important for recall.</li>
</ol>
<ul>
<li>You won't get a dog to come to you when they are distracted by a clicker - remember the clicker marks a behavoir it's not an attention getter. But a whistle can be both, and the beautiy of a whistle is that it doesn't sound panicked when the dog runs out into the street. It doesn't sound angry when the dog is digging a hole. It sounds the same every time.</li>
<li>Using a little bit of Pavlov's Classical Conditioning (which is what loading the clicker is) you can load a whistle in the same way to brain wash your dog to return no matter what. Whistle means I'm about to get steak!</li>
</ul>
<h2 id="counterpoint-you-should-also-load-a-keyword">Counterpoint, you should ALSO load a keyword</h2>
<p>I say you should "also" and not exclusively do this because sometimes you won't have your clicker. It'll get lost or broken, and won't be available sometimes.</p>
<ul>
<li>If you are going to use a word, make it a short one. In English a quick loud and higher pitched "Good!" is a great way to start. Just remember when you use it you have to reward the dog so your keyword doesn't lose its power.</li>
</ul>
<h2 id="have-fun">Have fun</h2>
<p>Keep your training sessions short and fun. If your dog is having an off day cut it short and put the stuff away, try again later.</p>
<p>Think of it as building a friendship with your dog. Dog is mans best friend after all, so try to be a good friend!</p>
2024-01-09T23:40:16.106422+00:00https://sudoedit.com/what-to-do/What to do, what to do...2024-01-20T02:37:05.733768+00:00sudoedithidden<h2 id="i-m-not-sure-what-to-do-with-this-blog-anymore">I'm not sure what to do with this blog anymore.</h2>
<p>When I started writing this blog, most of my motivation was to have an online
notebook for myself.</p>
<p>It grew into a place for me to do a little bit of public learning.</p>
<p>I've done some how-to's over the years and written about how I've solved a few
technical problems as a Linux admin, but I'm not really motivated to do that
anymore.</p>
<p>These days I'm more interested in writing about my dog Walter, or how bad I am at
video games.</p>
<p>So, if you follow this blog for Linuxy things. I'll probably still post some of
that stuff. But just know that I might be mixing in some things about what I've
been trying to train Walter to do. Right now he's one hell of a nap taker.</p>
<h2 id="new-year-new-me">New Year, New Me...</h2>
<p>I do plan to write more often in 2024.</p>
<p>This will be my 8th post of this year, and
it's a short one. I'd like to bump that number up to 24 next year just to keep
up with the writing habit.</p>
<p>I've been inspired by the blogging style that <a href="https://manuelmoreale.com">Manuel Moreale</a> has developed. He writes fairly often and in easily digestible chunks.</p>
<p>I'm sure I'll do some Linux posts in the near future. I've been doing some
thinking about the FHS lately and wondering about the circumstances behind how
it became a standard that everyone ignores.</p>
<p>Hope you have a wonderful new year!</p>
2023-12-28T00:00:00+00:00https://sudoedit.com/dont-ask-just-do/Just do it2024-01-20T02:37:09.431721+00:00sudoedithidden<h2 id="my-advice-to-junior-sysadmins">My advice to junior sysadmins.</h2>
<h2 id="there-is-no-right-way-just-fucking-do-it">There is no "right way" just fucking do it.</h2>
<p>One persons "best practice" is another persons "OMG what the fuck did you just do".</p>
<p>I'm not exactly a risk taker when it comes to managing systems, but I'm not paralyzed with anxiety about making a decision to take action either.</p>
<p>This is especially true if something is already broken - and I expect others (especially senior people) to be able to use their best judgement as well.</p>
<p>If you take some initiative and fuck something up, no one cares.</p>
<p>We all get a good laugh and the person who messed up learns something.</p>
<p>I've literally never seen anyone get fired for making a mistake, especially if it was a mistake that was intended to make a system or process better.</p>
<p>I've never seen anyone get fired or even reprimanded for making a mistake while trying to fix something that is broken.</p>
<p>Stop worrying about getting in trouble and just do the dang work.</p>
<h2 id="you-will-be-wrong-a-lot-i-m-wrong-all-the-time-no-one-cares-just-do-your-job">You will be wrong a lot, I'm wrong all the time, no one cares, just do your job.</h2>
<p>You will never learn anything if you don't take any initiative and never risk being wrong.</p>
<p>Get comfortable with being wrong, it's going to happen a lot and at least most of the time you'll probably walk away from your wrongness having learned something that'll make you less wrong the next time.</p>
<h2 id="don-t-seek-the-no">Don't seek the no.</h2>
<p>I read a book from Colin Powell a few years ago, one of the lessons I remember from that book is "Don't seek the no."</p>
<p>If you ask 5 people if you are allowed to do "thing", two of those people will say no if you want to do the thing differently than they do it, and the other three will probably tell you to ask someone else.</p>
<p>Don't do that shit.</p>
<p>If you have an idea on how to do something, just fucking do it.</p>
2023-11-01T00:00:00+00:00https://sudoedit.com/firefox-debian-package/Firefox is getting a deb package repository2024-01-20T02:37:12.947182+00:00sudoedithidden<p>Yesterday Mozilla announced that Firefox nightly builds will be available in an APT repository with the Stable, ESR, and Beta versions coming after "a period of testing".</p>
<p>Here's the <a href="https://blog.nightly.mozilla.org/2023/10/30/introducing-mozillas-firefox-nightly-deb-packages-for-debian-based-linux-distributions/">announcement</a> from the nightly blog.</p>
<h2 id="it-s-about-time">It's about time?</h2>
<p>I'm personally thrilled to see an official traditional package of Firefox coming directly from Mozilla instead of one of those new fangled Flatpak's or a Snap's.</p>
<p>Calm down - I don't know a damn thing about flatpak's I'm sure you are correct that they are the best thing since baby Jesus, I just haven't had much luck with them, and given the choice I'll stick with a traditional package every time. Even if it makes baby Jesus cry.</p>
<p>For as long as I can remember all of the major Linux distributions shipped Firefox by default and for the same amount of time Mozilla has never really seemed to care a whole lot about making it easy to install Firefox outside of your distributions package manager. Which really isn't that bad, except for the fact that usually updates would be a few days behind the upstream version.</p>
<p>It also sucks that Debian uses the ESR by default - so this will help me make a <a href="https://wiki.debian.org/DontBreakDebian#Don.27t_make_a_FrankenDebian">FrankenDebian</a>! How exciting!</p>
<h2 id="now-what-do-i-do-with-my-fancy-install-script">Now what do I do with my fancy install script?</h2>
<p>I wrote this awesome install/update script for the Firefox tarball a little while ago, since Mozilla didn't think Linux important enough to build an official package.</p>
<p>Here's the script in case you want it - YMMV (I know it works on Debian 12).</p>
<div class="highlight"><pre><span></span><span class="ch">#!/usr/bin/env bash</span>
<span class="c1"># tarball url found here https://ftp.mozilla.org/pub/firefox/releases/latest/README.txt</span>
<span class="c1"># Basically scripting the instructions found here:</span>
<span class="c1"># https://support.mozilla.org/en-US/kb/install-firefox-linux#:~:text=1%20Download%20Firefox%20from%20the%20Firefox%20download%20page,script%20in%20the%20firefox%20folder%3A%20%22~%2Ffirefox%2Ffirefox%22%20See%20More</span>
<span class="nv">desktop_file_path</span><span class="o">=</span><span class="s2">"/home/</span><span class="si">${</span><span class="nv">USER</span><span class="si">}</span><span class="s2">/.local/share/applications/firefox.desktop"</span>
<span class="nv">get_desktop_file</span><span class="o">=</span><span class="s2">"https://raw.githubusercontent.com/mozilla/sumo-kb/main/install-firefox-linux/firefox.desktop"</span>
<span class="k">if</span><span class="w"> </span><span class="o">[[</span><span class="w"> </span>-f<span class="w"> </span>firefox.tar.bz2<span class="w"> </span><span class="o">]]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"Removing old tarball"</span>
<span class="w"> </span>rm<span class="w"> </span>-f<span class="w"> </span>firefox.tar.bz2
<span class="k">fi</span>
<span class="nb">echo</span><span class="w"> </span><span class="s2">"Downloading latest Firefox tarball file..."</span>
wget<span class="w"> </span>-qO<span class="w"> </span>firefox.tar.bz2<span class="w"> </span><span class="s2">"https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US"</span>
sudo<span class="w"> </span>tar<span class="w"> </span>-C<span class="w"> </span>/opt/<span class="w"> </span>-xvf<span class="w"> </span>firefox.tar.bz2
<span class="k">if</span><span class="w"> </span><span class="o">[[</span><span class="w"> </span>!<span class="w"> </span>-h<span class="w"> </span>/usr/local/bin/firefox<span class="w"> </span><span class="o">]]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"linking firefox to /usr/local/bin/firefox"</span>
<span class="w"> </span>sudo<span class="w"> </span>ln<span class="w"> </span>-s<span class="w"> </span>/opt/firefox/firefox<span class="w"> </span>/usr/local/bin/firefox
<span class="k">fi</span>
<span class="c1">## If there is already a desktop file don't assume we want to overwrite it.</span>
<span class="k">if</span><span class="w"> </span><span class="o">[[</span><span class="w"> </span>!<span class="w"> </span>-f<span class="w"> </span><span class="si">${</span><span class="nv">desktop_file_path</span><span class="si">}</span><span class="w"> </span><span class="o">]]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"retrieving desktop file"</span>
<span class="w"> </span>cp<span class="w"> </span>firefox.desktop<span class="w"> </span><span class="si">${</span><span class="nv">desktop_file_path</span><span class="si">}</span>
<span class="k">fi</span>
rm<span class="w"> </span>-f<span class="w"> </span>firefox.tar.bz2
</pre></div>
2023-10-31T00:00:00+00:00https://sudoedit.com/learning-emacs/Look Mom! I'm doing Emacs!2024-01-20T02:37:16.516565+00:00sudoedithidden<h2 id="where-do-i-turn-in-my-vim-card">Where do I turn in my vim card?</h2>
<p>Every so often I get a wild hair up my ass and decide that I want to learn Emacs. A couple weeks ago one of those hairs appeared, and as a result here I am writing a blog post about Emacs, with Emacs, for people who will probably never use Emacs.</p>
<h2 id="doom-emacs-to-be-exact">Doom Emacs to be exact.</h2>
<p>I can't be bothered to learn all the crazy Emacs keyboard bindings, truth be told I'm too old and lazy to put my fragile little pinky fingers through the torture required to become efficient with the default key bindings.</p>
<p>Instead, I've been using <a href="https://github.com/doomemacs/doomemacs">Doom Emacs</a>, which is a little bit like <a href="https://www.spacemacs.org/">Spacemacs</a> but less popular.</p>
<p>Doom Emacs being less popular was important to me. This way I can keep my street cred even after handing over my Vim card.</p>
<p>Doom Emacs has a lot of benefits over the vanilla version of Emacs. Most notably (like Spacemacs) it has a very discoverable interface that can be explored through the menu that appears when you hit the space bar.</p>
<p>I found the configuration files to be a little more understandable in Doom over Spacemacs. Beyond that I think the Doom Emacs spacebar menu is a little more responsive with a bit easier navigation.</p>
<p>Try them both out and see what you think. Or don't...</p>
<h2 id="i-really-need-to-tell-you-about-orgmode">I really need to tell you about orgmode!</h2>
<p>But I'm not going to right now because I've done about all the writting I can do for the moment.</p>
<p>What I will say is this. From what I can tell every note taking app on earth really really wants to be Emacs Orgmode, but they just can't seem to get it right.</p>
2023-10-30T00:00:00+00:00