<metaname="description"content="agares, a multi armed demon well, originally i don’t think the multi armed part was mentioned in the “list of demons” i found on the internet. now, though, agares is absolutely multi armed because I keep adding so much bullshit to this project."/>
<metaproperty="og:description"content="agares, a multi armed demon well, originally i don’t think the multi armed part was mentioned in the “list of demons” i found on the internet. now, though, agares is absolutely multi armed because I keep adding so much bullshit to this project."/>
{"description":"agares, a multi armed demon well, originally i don’t think the multi armed part was mentioned in the “list of demons” i found on the internet. now, though, agares is absolutely multi armed because I keep adding so much bullshit to this project.","@type":"BlogPosting","url":"http://localhost:4000/projects/2019/04/15/agares.html","headline":"agares","dateModified":"2019-04-15T00:00:00-05:00","datePublished":"2019-04-15T00:00:00-05:00","mainEntityOfPage":{"@type":"WebPage","@id":"http://localhost:4000/projects/2019/04/15/agares.html"},"@context":"http://schema.org"}</script>
<h1id="agares-a-multi-armed-demon">agares, a multi armed demon</h1>
<p>well, originally i don’t think the multi armed part was mentioned in the “list of demons” i found on the internet. now, though, agares is absolutely multi armed because I keep adding so much bullshit to this project.</p>
<ul>
<li>sync my dot files. .emacs, bash, powershell, etc.</li>
<li>configure windows devices. install software, some minor software configuration, remove windows bullshit.</li>
<li>sync my keyboard config; this involves updating a .png as well as a folder of .json an .kll files to apply firmware to ergodox.</li>
<li>house deployments for home projects</li>
</ul>
<p>Up next is configuring an Mac device, and then whatever else I get to throw at it.</p>
<h2id="dot-file-sync">dot file sync</h2>
<p>I think I’m doing this poorly. So far all i’m really doing is configuring all devices <em>actual</em> dot files to load these <codeclass="highlighter-rouge">agares/</code> dotfiles.</p>
<ul>
<li>powershell: make sure you don’t have powershell, vscode /ise, and pwsh.exe all looking for the same profile. you’ll hate yourself. split them up.</li>
<li>.emacs: this is pretty straightforward unless you use more emacs features than me (easy to do). I leave in just a single .emacs file.</li>
<li>.bashrc: there’s a complicated set of rules that determines, at least on mac, when different .bash* files get loaded. be careful that yours only loads when you want it</li>
<li>.tmux: straight forward.</li>
<li>conemu: i don’t have an elegant solve for this. I just import this file whenever I set up a new machine. there is likely a better way.</li>
<p>I found <ahref="http://hayne.net/MacDev/Notes/unixFAQ.html#shellStartup">this</a> link very useful, quoted below:<br/>
When a “login shell” starts up, it reads the file “/etc/profile” and then “~/.bash_profile” or “~/.bash_login” or “~/.profile” (whichever one exists - it only reads one of these, checking for them in the order mentioned).</p>
<p>When a “non-login shell” starts up, it reads the file “/etc/bashrc” and then the file “~/.bashrc”.</p>
<p>Note that when bash is invoked with the name “sh”, it tries to mimic the startup sequence of the Bourne shell (“sh”). In particular, a non-login shell invoked as “sh” does not read any dot files by default. See the bash man page for details.</p>
<p>What this means is that you don’t want to link or load the agares .bashrc file from .bashrc <em>necessarily</em>. It depends on your usage. you’ll likely wanna call it from .bash_profile instead, if you’re on a mac.</p>
<h2id="configure-windows-devices">configure windows devices</h2>
<p>3rd party app install is all handled through chocolatey. this is a great / terrible tool for this. great because it actually exists (wonderful!). Terrible because of certain usability problems. some packages install very weirdly through. emacs, for instance; do you want emacs? or emacs64? Those are not just optimized for different cpus, but are actually different versions of emacs (24 vs 25) that have different features shipped natively.</p>
<h3id="removing-windows-kruft">removing windows kruft</h3>
<p>windows, particularly windows10, now ships with a bunch of bullshit that no sane person wants on their fucking computer. fucking 3rd party games are my favorite. thanks msft, get the fuck out. I stole a bunch of functions from <ahref="https://gist.github.com/alirobe/7f3b34ad89a159e6daa1">this</a> gist (which stole them from another). I definitely recommend perusing powershell module file i made before running the functions therein. Some are easy wins, or simple “get started” features, like removing a game or unpinning stuff from the start menu. Some are more hit or miss, like disabling the windows store; great 90% of the time IME, but if you didn’t have WSL you <em>must</em> have the windows store or you can’t install it.</p>
<h3id="a-note-on-hypervisors">a note on hypervisors</h3>
<p>i do a lot of work on hyper-v, especially recently, because there’s a great suite of automation tools that work natively on that platform. hyperv is a fine tool for many things, particularly home labbing, but far less useful as a “need to run second OS without dual boot” utility. If you need that you’ll likely need something like vmware workstation or virtualbox. the bad news is <em>you cannot have hyperv and another hypervisor active on the same machine at the same time</em>. hyperv blocks other hypervisors from working because its petty and rude (something about the way it operates does this. for more information on this check out <ahref="https://superuser.com/questions/1208850/why-vitualbox-or-vmware-can-not-run-with-hyper-v-enabled-windows-10">this superuser answer</a>).</p>
<p>i use an <ahref="https://www.massdrop.com/buy/infinity-ergodox">infinity ergodox</a> at home. this is a fun entry level diy project that taught me to solder (badly) and introduced me to QMK and TMK. I avoid having to dive very deep into those and instead use input.club’s online <ahref="https://input.club/configurator-ergodox/">configurator tool</a>. i download the output and put them into the keyboard dir of <codeclass="highlighter-rouge">agares</code>, along with a screenshot of the configurator tool, so that I know how everything is <em>currently</em> configured. this helps especially early on when you’re tweaking the keymap every few days trying to remember “where the fuck did i put the _ sign??”.</p>
<p>Once that’s downloaded you still have to flash your ergodox. do yourself a favor and keep a “flash” keybinding easily accessible on both sides of your keyboard or you will hate yourself.</p>
<p>Some guides say you only need to flash one side of the keyboard as long as they are plugged into each other. That has never worked for me and I <em>must</em> flash both sides or the keymap will be incorrect.</p>
<h3id="flashing-the-keyboard-on-windows">flashing the keyboard on windows</h3>
<p>i absolutely can not get this to work unless i’m running a linux guest in virtualbox. instead, I flash from a mac or other *nix computer because its just hilariously easy and I don’t have to fuck with loading a new driver first. sorry for this terrible answer, but for the infinity ergodox this is literally the easiest way. if anyone knows one for the love of god please <ahref="mailto:me@jowj.net">email me</a>.</p>
<h3id="flashing-the-keyboard-on-nix">flashing the keyboard on *nix</h3>
<p><ahref="https://www.reddit.com/r/MechanicalKeyboards/comments/5bjtt8/guide_infinity_ergodox_linux_guide_modifying/">read this here poast</a></p>
<h2id="deployments-for-home-projects">deployments for home projects</h2>
<p>right now this is really just a spot for my deployment of <codeclass="highlighter-rouge">mojojojo-bot</code>, my slackbot. you can read more about it (in an out of date blog post) <ahref="/blogposts/mojojojo-bot.md">here</a>.</p>
<p>I deploy it using ansible targeting one of my few docker hosts. right now those are all local. eventually, i hope to build out a spot, or a deployment mechanism, for pushing it to Azure or AWS. I call <codeclass="highlighter-rouge">mojo.yml</code> with ansible-playbook, referencing a custom inventory file of <codeclass="highlighter-rouge">hosts.yml</code>, with <codeclass="highlighter-rouge">--ask-vault-pass</code> to prompt for password to decrypt <codeclass="highlighter-rouge">mojo-vault-vars.yml</code>, containing the slack-bot API token. this allows me to sync the actual API token via github, encrypted, without worrying about everyone and their dog fucking with my slack server.</p>