You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

117 lines
10 KiB

<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset='utf-8'>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="stylesheet" href="/assets/css/style.css?v=96e407dbfef5e6ab83daa6dca716c304bdc64c14">
<link rel="stylesheet" type="text/css" href="/assets/css/print.css" media="print">
<link rel='shortcut icon' type='image/x-icon' href='favicon.ico' />
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<!-- Begin Jekyll SEO tag v2.5.0 -->
<title>agares | josiah ledbetter</title>
<meta name="generator" content="Jekyll v3.7.4" />
<meta property="og:title" content="agares" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="agares, a multi armed demon well, originally i dont 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." />
<meta property="og:description" content="agares, a multi armed demon well, originally i dont 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." />
<link rel="canonical" href="http://localhost:4000/projects/2019/04/15/agares.html" />
<meta property="og:url" content="http://localhost:4000/projects/2019/04/15/agares.html" />
<meta property="og:site_name" content="josiah ledbetter" />
<meta property="og:type" content="article" />
<meta property="article:published_time" content="2019-04-15T00:00:00-05:00" />
<script type="application/ld+json">
{"description":"agares, a multi armed demon well, originally i dont 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>
<!-- End Jekyll SEO tag -->
</head>
<body>
<div id="container">
<div class="inner">
<header>
5 years ago
<h1>josiah ledbetter</h1>
</header>
<section id="downloads" class="clearfix">
</section>
<hr>
<section id="main_content">
<h1 id="agares-a-multi-armed-demon">agares, a multi armed demon</h1>
<p>well, originally i dont 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>
<h2 id="dot-file-sync">dot file sync</h2>
<p>I think Im doing this poorly. So far all im really doing is configuring all devices <em>actual</em> dot files to load these <code class="highlighter-rouge">agares/</code> dotfiles.</p>
<ul>
<li>powershell: make sure you dont have powershell, vscode /ise, and pwsh.exe all looking for the same profile. youll 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: theres 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 dont 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>
</ul>
<h3 id="further-bashrc-info">further .bashrc info</h3>
<p>I found <a href="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 dont want to link or load the agares .bashrc file from .bashrc <em>necessarily</em>. It depends on your usage. youll likely wanna call it from .bash_profile instead, if youre on a mac.</p>
<h2 id="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>
<h3 id="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 <a href="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 didnt have WSL you <em>must</em> have the windows store or you cant install it.</p>
<h3 id="a-note-on-hypervisors">a note on hypervisors</h3>
<p>i do a lot of work on hyper-v, especially recently, because theres 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 youll 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 <a href="https://superuser.com/questions/1208850/why-vitualbox-or-vmware-can-not-run-with-hyper-v-enabled-windows-10">this superuser answer</a>).</p>
<h2 id="keyboard-firmware-sync">keyboard firmware sync</h2>
<p>i use an <a href="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.clubs online <a href="https://input.club/configurator-ergodox/">configurator tool</a>. i download the output and put them into the keyboard dir of <code class="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 youre tweaking the keymap every few days trying to remember “where the fuck did i put the _ sign??”.</p>
<p>Once thats 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>
<h3 id="flashing-the-keyboard-on-windows">flashing the keyboard on windows</h3>
<p>i absolutely can not get this to work unless im running a linux guest in virtualbox. instead, I flash from a mac or other *nix computer because its just hilariously easy and I dont 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 <a href="mailto:me@jowj.net">email me</a>.</p>
<h3 id="flashing-the-keyboard-on-nix">flashing the keyboard on *nix</h3>
<p><a href="https://www.reddit.com/r/MechanicalKeyboards/comments/5bjtt8/guide_infinity_ergodox_linux_guide_modifying/">read this here poast</a></p>
<h2 id="deployments-for-home-projects">deployments for home projects</h2>
<p>right now this is really just a spot for my deployment of <code class="highlighter-rouge">mojojojo-bot</code>, my slackbot. you can read more about it (in an out of date blog post) <a href="/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 <code class="highlighter-rouge">mojo.yml</code> with ansible-playbook, referencing a custom inventory file of <code class="highlighter-rouge">hosts.yml</code>, with <code class="highlighter-rouge">--ask-vault-pass</code> to prompt for password to decrypt <code class="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>
</section>
<footer>
</footer>
</div>
</div>
</body>
</html>