diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..37f5eaa --- /dev/null +++ b/Gemfile @@ -0,0 +1,2 @@ +source 'https://rubygems.org' +gem 'github-pages', group: :jekyll_plugins diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..2545605 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,248 @@ +GEM + remote: https://rubygems.org/ + specs: + activesupport (4.2.10) + i18n (~> 0.7) + minitest (~> 5.1) + thread_safe (~> 0.3, >= 0.3.4) + tzinfo (~> 1.1) + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.11.1) + colorator (1.1.0) + commonmarker (0.17.13) + ruby-enum (~> 0.5) + concurrent-ruby (1.1.5) + dnsruby (1.61.2) + addressable (~> 2.5) + em-websocket (0.5.1) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0.6.0) + ethon (0.12.0) + ffi (>= 1.3.0) + eventmachine (1.2.7-x64-mingw32) + execjs (2.7.0) + faraday (0.15.4) + multipart-post (>= 1.2, < 3) + ffi (1.10.0-x64-mingw32) + forwardable-extended (2.6.0) + gemoji (3.0.0) + github-pages (197) + activesupport (= 4.2.10) + github-pages-health-check (= 1.16.1) + jekyll (= 3.7.4) + jekyll-avatar (= 0.6.0) + jekyll-coffeescript (= 1.1.1) + jekyll-commonmark-ghpages (= 0.1.5) + jekyll-default-layout (= 0.1.4) + jekyll-feed (= 0.11.0) + jekyll-gist (= 1.5.0) + jekyll-github-metadata (= 2.12.1) + jekyll-mentions (= 1.4.1) + jekyll-optional-front-matter (= 0.3.0) + jekyll-paginate (= 1.1.0) + jekyll-readme-index (= 0.2.0) + jekyll-redirect-from (= 0.14.0) + jekyll-relative-links (= 0.6.0) + jekyll-remote-theme (= 0.3.1) + jekyll-sass-converter (= 1.5.2) + jekyll-seo-tag (= 2.5.0) + jekyll-sitemap (= 1.2.0) + jekyll-swiss (= 0.4.0) + jekyll-theme-architect (= 0.1.1) + jekyll-theme-cayman (= 0.1.1) + jekyll-theme-dinky (= 0.1.1) + jekyll-theme-hacker (= 0.1.1) + jekyll-theme-leap-day (= 0.1.1) + jekyll-theme-merlot (= 0.1.1) + jekyll-theme-midnight (= 0.1.1) + jekyll-theme-minimal (= 0.1.1) + jekyll-theme-modernist (= 0.1.1) + jekyll-theme-primer (= 0.5.3) + jekyll-theme-slate (= 0.1.1) + jekyll-theme-tactile (= 0.1.1) + jekyll-theme-time-machine (= 0.1.1) + jekyll-titles-from-headings (= 0.5.1) + jemoji (= 0.10.2) + kramdown (= 1.17.0) + liquid (= 4.0.0) + listen (= 3.1.5) + mercenary (~> 0.3) + minima (= 2.5.0) + nokogiri (>= 1.8.5, < 2.0) + rouge (= 2.2.1) + terminal-table (~> 1.4) + github-pages-health-check (1.16.1) + addressable (~> 2.3) + dnsruby (~> 1.60) + octokit (~> 4.0) + public_suffix (~> 3.0) + typhoeus (~> 1.3) + html-pipeline (2.10.0) + activesupport (>= 2) + nokogiri (>= 1.4) + http_parser.rb (0.6.0) + i18n (0.9.5) + concurrent-ruby (~> 1.0) + jekyll (3.7.4) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 0.7) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 2.0) + kramdown (~> 1.14) + liquid (~> 4.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (>= 1.7, < 4) + safe_yaml (~> 1.0) + jekyll-avatar (0.6.0) + jekyll (~> 3.0) + jekyll-coffeescript (1.1.1) + coffee-script (~> 2.2) + coffee-script-source (~> 1.11.1) + jekyll-commonmark (1.3.1) + commonmarker (~> 0.14) + jekyll (>= 3.7, < 5.0) + jekyll-commonmark-ghpages (0.1.5) + commonmarker (~> 0.17.6) + jekyll-commonmark (~> 1) + rouge (~> 2) + jekyll-default-layout (0.1.4) + jekyll (~> 3.0) + jekyll-feed (0.11.0) + jekyll (~> 3.3) + jekyll-gist (1.5.0) + octokit (~> 4.2) + jekyll-github-metadata (2.12.1) + jekyll (~> 3.4) + octokit (~> 4.0, != 4.4.0) + jekyll-mentions (1.4.1) + html-pipeline (~> 2.3) + jekyll (~> 3.0) + jekyll-optional-front-matter (0.3.0) + jekyll (~> 3.0) + jekyll-paginate (1.1.0) + jekyll-readme-index (0.2.0) + jekyll (~> 3.0) + jekyll-redirect-from (0.14.0) + jekyll (~> 3.3) + jekyll-relative-links (0.6.0) + jekyll (~> 3.3) + jekyll-remote-theme (0.3.1) + jekyll (~> 3.5) + rubyzip (>= 1.2.1, < 3.0) + jekyll-sass-converter (1.5.2) + sass (~> 3.4) + jekyll-seo-tag (2.5.0) + jekyll (~> 3.3) + jekyll-sitemap (1.2.0) + jekyll (~> 3.3) + jekyll-swiss (0.4.0) + jekyll-theme-architect (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-cayman (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-dinky (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-hacker (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-leap-day (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-merlot (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-midnight (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-minimal (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-modernist (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-primer (0.5.3) + jekyll (~> 3.5) + jekyll-github-metadata (~> 2.9) + jekyll-seo-tag (~> 2.0) + jekyll-theme-slate (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-tactile (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-time-machine (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-titles-from-headings (0.5.1) + jekyll (~> 3.3) + jekyll-watch (2.2.1) + listen (~> 3.0) + jemoji (0.10.2) + gemoji (~> 3.0) + html-pipeline (~> 2.2) + jekyll (~> 3.0) + kramdown (1.17.0) + liquid (4.0.0) + listen (3.1.5) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + ruby_dep (~> 1.2) + mercenary (0.3.6) + mini_portile2 (2.4.0) + minima (2.5.0) + jekyll (~> 3.5) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + minitest (5.11.3) + multipart-post (2.0.0) + nokogiri (1.10.2-x64-mingw32) + mini_portile2 (~> 2.4.0) + octokit (4.14.0) + sawyer (~> 0.8.0, >= 0.5.3) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (3.0.3) + rb-fsevent (0.10.3) + rb-inotify (0.10.0) + ffi (~> 1.0) + rouge (2.2.1) + ruby-enum (0.7.2) + i18n + ruby_dep (1.5.0) + rubyzip (1.2.2) + safe_yaml (1.0.5) + sass (3.7.3) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sawyer (0.8.1) + addressable (>= 2.3.5, < 2.6) + faraday (~> 0.8, < 1.0) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + thread_safe (0.3.6) + typhoeus (1.3.1) + ethon (>= 0.9.0) + tzinfo (1.2.5) + thread_safe (~> 0.1) + unicode-display_width (1.5.0) + +PLATFORMS + x64-mingw32 + +DEPENDENCIES + github-pages + +BUNDLED WITH + 2.0.1 diff --git a/_config.yml b/_config.yml index fc24e7a..b5b5f3d 100644 --- a/_config.yml +++ b/_config.yml @@ -1 +1,2 @@ -theme: jekyll-theme-hacker \ No newline at end of file +theme: jekyll-theme-tactile +title: josiah ledbetter diff --git a/_layouts/_site/defaults.html b/_layouts/_site/defaults.html new file mode 100644 index 0000000..7a67cda --- /dev/null +++ b/_layouts/_site/defaults.html @@ -0,0 +1,62 @@ + + +
+ + + + + + + +{% seo %} + + + +personal posts are here:
+ + +my sister made a bunch of that stuff there; the candles were all melted on to the wood and the gourds that they were resting on; the wreathes of Whatever Plant were picked from her garden; even the table it all sat on was made by my sister and her family
+ +it’s lovely and makes me feel fucking warm to have been there.
+ +we flew in to seattle from austin at 845 am. don’t take that flight it was fucking horrible but it did give us a full day there despite flying for 4 hours.
+ +we drove around a bunch, but we started the night at sheri’s. we saw new (baby!) cats and ate good food and had our photo taken by a family friend. +
+ +i forgot to take pictures this trip so here’s some from last year: + +this is jill’s back porch and it feels fake to me. so many trees it’s stunning.
+ ++we played a lot of mule, an old atari 800 game. it’s a lot of fun; laura hates computer games but since this is just a board game with calculations and tabulations done by a computer she sorta fell in love
+ +i forgot to take pictures of food. and also forgot to take a lot of other pictures. i did get a funny picture of laura’s family though, it was great: +
+ +we are boys and we are rad +sometimes our cooking makes us sad
+ +but not this time, this time we made ceviche and it was fucking bomb
+ +noah’s desk, was so large +it was, like, the size of a barge
+ + + +micah’s desk was very sad +it was so small +and so lonely
+ + + +my desk is the perfect size and my laptop is totally a normal weight why do you ask
+ +and made ceviche and watched tv
+ ++ +
+ +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.
+ +Up next is configuring an Mac device, and then whatever else I get to throw at it.
+ +I think I’m doing this poorly. So far all i’m really doing is configuring all devices actual dot files to load these agares/
dotfiles.
I found this link very useful, quoted below:
+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).
When a “non-login shell” starts up, it reads the file “/etc/bashrc” and then the file “~/.bashrc”.
+ +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.
+ +What this means is that you don’t want to link or load the agares .bashrc file from .bashrc necessarily. It depends on your usage. you’ll likely wanna call it from .bash_profile instead, if you’re on a mac.
+ +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.
+ +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 this 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 must have the windows store or you can’t install it.
+ +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 you cannot have hyperv and another hypervisor active on the same machine at the same time. 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 this superuser answer).
+ +i use an infinity ergodox 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 configurator tool. i download the output and put them into the keyboard dir of agares
, along with a screenshot of the configurator tool, so that I know how everything is currently 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??”.
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.
+ +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 must flash both sides or the keymap will be incorrect.
+ +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 email me.
+ +right now this is really just a spot for my deployment of mojojojo-bot
, my slackbot. you can read more about it (in an out of date blog post) here.
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 mojo.yml
with ansible-playbook, referencing a custom inventory file of hosts.yml
, with --ask-vault-pass
to prompt for password to decrypt mojo-vault-vars.yml
, 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.
Turns out this was pretty straightforward. The steps are basically:
+ +* decide on a dns name for your static page
+* create an S3 bucket using that name (bullshit.jowj.net)
+* upload at least one file to your bucket
+* change bucket to enable hosting static pages (ensure you set the file you uploaded to be your index)
+* copy fully qied aws name of endpoint and point cname (bullshit) to that endpoint
+* boom done.
+
I’d had this as a “thing to do” for forever, but I guess I thought it’d be more involved. this was just really straight forward.
+ + +this was relatively easy to build initially (straight from a template), but building any functionality that I wanted into was, as expected, hard. because i am garbage at python.
+ +pdb.set_trace
+SETS A BREAK POINT IN CODE AND I CAN WRITE CODE THERE AND INTERACT WITH IT HOOOO MY GOD
+
this is probably the biggest thing i learned; para exemplar say you have a bit of code that defines a variable eq to individual objects you iterate through one at a time:
+events = slack_client.rtm_read()
+for event in events:
+ thing = event.property
+ thing2 = event.otherproperty
+ do stuff with thing / thing2
+
sometimes (all the time) you run into problems where maybe one of the variables you defined doesn’t have the data you expect. so in order to troubleshoot you open you repl and try and do some adhoc definitions of variables and tokens so you can see what the deal is. as you might expect, that’s bad and doesn’t work very well. but with pdb.set_trace you can define a break point in your code that will give you a prompt, and then you can type “interact” into the prompt and it will let you type python into a repl provided with the state inherent in that point in your code! how fucking cool is that??
+ +import pdb
+events = slack_client.rtm_read()
+for event in events:
+ thing = event.property
+ thing2 = event.otherproperty
+ pdb.set_trace
+ do stuff with thing / thing2
+
now the code looks like this and you can just call dir(events) and view its properties!!
+ +python is not powershell python is not powershell python is not powershell python is no
+ +so in powershell if you’re given a dict you can access its indexes using dot params. like
+PS /> $dict = @{}
+PS /> $dict.Add('firstname','jowj')
+PS /> $dict.Add('pet','metroid')
+PS /> $dict
+
+Name Value
+---- -----
+pet metroid
+firstname jowj
+
+
+PS /> $dict.pet
+metroid
+PS />
+
in python you cannot do this. in python, in order to pull data for a particular key/value pair, you must index using they key value.
+>>> dict = {}
+>>> dict
+{}
+>>> dict = {"firstname" : "jowj", "pet" : "metroid"}
+>>> dict
+{'firstname': 'jowj', 'pet': 'metroid'}
+>>> dict.firstname
+Traceback (most recent call last):
+ File "<stdin>", line 1, in <module>
+AttributeError: 'dict' object has no attribute 'firstname'
+>>> dict[0]
+Traceback (most recent call last):
+ File "<stdin>", line 1, in <module>
+KeyError: 0
+>>> dict["firstname"]
+'jowj'
+>>>
+
it took me. so. so. so. long.
+ +i gotta finish fixing this bot to get everything i want into 1 file (right now i have some of the functionality i want in two different scripts). then maybe add some extra functionality like:
+i open it in “working copy” and then send it to your markdown editor. then you sent it back to working copy.
+ +really, it’s a lot better than i expected it to be. i’m writing this on my phone for christ sake, but it’s still really straight forward to add a list, insert images, whatever
+ +that is so fucking great tbh
+ +