# Current projects list

## 1 programming languages

### 1.1[7/12] attain ClojureScript competency

Get to the point where I can make at least a site in ClojureScript that does some subset of the basic stuff one would expect from a modern web application.

#### 1.1.1DONE standardize cljs execution environment

• State "DONE" from "STRT" [2020-06-24 Wed 11:04]
• State "STRT" from "TODO" [2020-06-24 Wed 10:56]

I've used PhantomJS in the past, so consider it here as my main ClojureScript. Seemed to be popular last time I checked, but that may no longer be true. Look into Emacs integration.

Done. Looks like the most popular are the browser, followed by nodejs. So, will stick with that. An alternative method to installing nodejs directly is nvm, which will manage multiple versions of nodejs. Skipping that for now until I need it. Setup:

• Ensure rlwrap is on system.
• yay -S community/nodejs
• Optional: yay -S community/npm

• State "DONE" from "STRT" [2020-06-24 Wed 15:58]
• State "STRT" from "TODO" [2020-06-24 Wed 01:35]

An online ClojureScript book. Looks a bit thin. Maybe just review the dev setup content and get tooling working in the process.

Done. Read most of this. There's some problems with this text, like example code that doesn't work. Didn't read all of it as a result. Will try to find another resource. Did learn a few things though.

Notes:

• You can create a cljs.core/PersistentQueue with (def pq #queue [1 2 3]). conj, peek, pop work against queues. Only works in cljs.
• Use the #? reader conditional for language checking, and other stuff. Similar usage for splicing with #?@.

#?(:clj  (Integer/parseInt v)
:cljs (js/parseInt v))

• Somehow I never knew you could do this, which is probably only useful in multimethods:

(derive ::a ::b)
(isa? ::a ::b) ; true
(isa? ::b ::a) ; false

• specify! is a cljs-only alternative to reify, which allows adding protocol implementations to existing JS types. specify is an immutable version.
• JS types can be created the same way as Java objects in Clojure, with . semantics, and .- to access properties.
• Create JS objects with js-obj with args being k/v pairs, or the #js tagged literal against a map. set! mutates. Conversions are handled with clj->js, js->clj, and into-array.
• Volatiles are like atoms. They don't support validation and watching, but are slightly faster. Functions: volatile!, volatile?, vswap!, vreset!.

#### 1.1.3DONE devise Clojure CLI tools ClojureScript workflow

• State "DONE" from "STRT" [2020-06-24 Wed 15:58]
• State "STRT" from "TODO" [2020-06-24 Wed 11:12]

Do a version of this minus Emacs integration. Emacs should work the same for lein or CLI, so will do that separate. This will also demonstrate how this actually works behind the scenes more.

Done. The build pipeline for this is still a little hazy. The setups here work, but are still a bit clunky. Some examples created in ~/src/cljs/clitest and ~/src/cljs/clibrowser. The latter implements an alternate watcher build script, detects source changes and recompiles automatically.

Notes:

• Looks like cljs projects require both the Clojure and ClojureScript JARs.
• A file called build.clj is required. This calls build function in cljs.build.api and lets you specify the main namespace, what input to compile, and where the output should go. Omitting the :target will default to the browser. For output, :output-to is the JS file of your application and :output-dir is all of its dependencies, I think.
• Run the build with clojure build.clj.
• Execute output with node main.js. For node, it looks like it creates a hashbag to env node, so you could also chmod u+x it and just run it directly.
• A browser version of this would be the same, except there is no -main function. Then one would create an HTML file that references main.js. In my example project, the message is printed to the console.
• See browser REPL example for an REPL tied to a running webapp in a browser. From the REPL prompt, one could run (js/alert "hi"), and an alert box will display in the browser. println calls at the REPL seem to go nowhere though.

May still want to take another pass at this if I use CLI tools for a cljs project, like adding figwheel integration.

#### 1.1.4DONE figure out Emacs+Leiningen ClojureScript tooling

• State "DONE" from "STRT" [2020-06-24 Wed 16:58]
• State "STRT" from "TODO" [2020-06-24 Wed 16:18]

CIDER should support everything I need on the Emacs side. Perhaps configure projects with shadow-cljs. Look at lein-cljsbuild and see if it offers anything lein-figwheel doesn't.

Resources:

Done. Looked at all of these, and some demo projects.

shadow-cljs: Basically a build tool for cljs. Requires an npm install. You create a shadow-cljs.edn file and call the shadow-cljs on it to compile, watch, or start REPLs. I like this better than writing this myself for CLI tools, but won't use it for now.

lein-cljsbuild seems fine, and is a basic lein-integrated build tool+REPL. It enables a :cljsbuild key in project.clj.

Figwheel Main is definitely what I want. It's a rewrite of lein-figwheel that supports Lein and CLI. Use the flappy-bird-demo-new project as a sample for setting up project.clj. From the command line, you can run lein figwheel to build/launch the project. A tutorial is available.

The CIDER workflow is only slightly different, with running M-x cider-jack-in-cljs or C-c C-x C-j s. Select sensible values for the various prompts and a REPL with live reloading will be activated. After this, all normal CIDER usage should work.

#### 1.1.5DONE review differences between ClojureScript and Clojure

• State "DONE" from "STRT" [2020-06-24 Wed 22:40]
• State "STRT" from "TODO" [2020-06-24 Wed 17:02]

Review this official list, just to be sure I didn't miss anything important.

Notes:

• Only integer and floating point number types that map to JS primitives are supported.
• Characters are single character strings. No character literals, e.g. \f evaluates to "f".
• load and load-file only work from the REPL.
• If defining macros, do so in one namespace and use them in another with a :require-macros keyword on the ns macro.
• This says that cljs uses JS regexes, but #"" syntax seems to work at the REPL. Something to keep in mind.
• cljs nil is equivalent to JS's null and undefined.
• To check keyword equivalence, use keyword-identical?, not identical?.
• :require in ns macros doesn't support :refer or :all.
• Globals are accessed through the js/ namespace.
• Some libraries are already included in cljs, including clojure.set, clojure.string, cljs.pprint, cljs.spec, and cljs.test.

#### 1.1.6DONE read Reactive with ClojureScript Recipes: Functional Programming for the Web

• State "DONE" from "STRT" [2020-06-25 Thu 23:23]
• State "STRT" from "TODO" [2020-06-24 Wed 22:50]

The most recent ClojureScript book, from 2017. Uses boot for tooling, so ignore anything in that area. This is a recipes book, so skim accordingly.

Quitting. Very trashy, even for a recipes book. I'd rather learn this stuff the hard way than read all of this, trying to extract the actually useful bits.

Notes:

• enable-console-print! will send print output to js/console.
• There's some info in here about DOM manipulation that might be useful. Skipping in hopes I can use cljs libraries for this.

#### 1.1.7CNCL read Études for ClojureScript

• State "CNCL" from "TODO" [2020-06-25 Thu 23:25]

A 2015 book on ClojureScript with practice problems. There's another O'Reilly ClojureScript book, ClojureScript Up and Running, but that's even older than this one.

Canceled. I thought I had a copy of this, but turns out I don't. Now I'm out of cljs books, so looks like I'm going commando from now on.

#### 1.1.8TODO determine cljs lein project workflow

Still iffy right now on cljs project creation and management.

Resources:

Workflow:

• lein new figwheel proj-name. Apparently, you can install JS dependencies with npm install from the project directory.

#### 1.1.9TODO consider Reagent

A ClojureScript wrapper around React. Can use this to create components instead of Hiccup creating HTML. Manages state with a global atom, I think.

#### 1.1.10TODO consider re-frame

A cljs SPA framework, on top of React. See if this can be used in conjunction with Reagent.

Others describe this as being useful for larger scale apps or for larger teams. Recommendation for solo small projects is to use Reagent by itself.

#### 1.1.11TODO consider re-frisk

Some kind of ClojureScript UI library, related to re-frame.

#### 1.1.12TODO make a basic site

Use Reagent, re-frame, and re-frisk, probably. This experience will tell me to what degree do I want to consider webapps a platform for software, along with whether I'm missing some fundamental concepts for actually doing so.

### 1.2[4/18] attain mid-level Haskell competency

Lesson plan for going from hobbiest Haskell programmer to being able to do most real world things. This focuses on the core language, ignoring libraries and practical application development.

Will get this started, then suspend effort for 4-6 months.

#### 1.2.1DONE survey modern Emacs/Haskell tooling

• State "DONE" from "STRT" [2020-06-21 Sun 17:48]
• State "STRT" from "TODO" [2020-06-21 Sun 10:06]

I'm mildly tempted to get a less heavyweight Emacs setup for the language, which would also hopefully be less fragile. See what the options are right now.

Done, or at least done enough to get started.

Looks like this is true right now:

• GHC: Use ghcup, which can install and update GHC, including managing multiple GHC versions.
• Toolchain:
• Stack still works and is usable. Some still use this. But, Cabal somehow managed to get a lot better. Cabal-hell is supposedly no more.
• Use ghcup to install Cabal.
• The version of Cabal to use is version 3.
• Install all toolchain utilities (hoogle, brittany, summoner, etc.) via Cabal.
• Nix is less necessary now as the tooling provides these benefits, mostly. cabal-install can be used in a Nix-like way (or in the old way if desired). The sandbox method is obsolete.
• Do everything within Cabal projects, or at least try to. Stack might still be useful for building certain older projects/tools.
• Emacs:
• Intero development is mostly abandoned. I should deprecate this. Some say this works, but others claim bitrot. Dante is the same.
• The Haskell community is switching to haskell-language-server, though it's still in a relatively rough state. Seems like it should have some staying power. Uses LSP.

#### 1.2.2DONE redo base Haskell dev stack

• State "DONE" from "STRT" [2020-06-21 Sun 19:34]
• State "STRT" from "TODO" [2020-06-21 Sun 17:59]

Install GHC and Cabal 3, the proper way. Figure out how to do the standard project management tasks here, and the idioms for project isolation.

Some resources:

Done. This approach has the whole toolchain except ghcup installed user-specific. Note that this is almost certain to not work eventually. However, the general approach will hopefully remain valid for awhile. Using ghcup should standardize the approach across environments. It seems especially needed on Arch, since the dynamic linking its packages default to gets broken easily. Some people are working on a Cabal docs refactor right now, so I'll hold off on the full project management stuff until then.

Added this to workstation and laptop. VPS doesn't have enough space on /tmp for it, so skipping it there. I could symlink a directory there if I ever really need it.

Setup:

• Remove GHC if installed already: yay -R ghc ghc-libs
• Install ghcup from AUR: yay -S ghcup-hs-bin
• Ensure ghcup is latest version: ghcup upgrade
• Add ~/.ghcup/bin to $PATH. • Install GHC with ghcup install. This will add versioned symlinks to ~/.ghcup/bin for things like ghci, ghc, and runhaskell. • Set the active version of GHC with something like ghcup set 8.8.3. Now un-versioned symlinks for ghc, ghci, etc. will be created. Note that this is the first chance for a warning of an upgraded version being available. Probably should update to that if the version difference is significant, but keep both around (use ghcup rm <version-number> otherwise). Then set that version to default. • Run ghci to test setup so far. • Install Cabal with ghcup install-cabal. This should give a version 3.x.x of cabal-install. • Add ~/.cabal/bin to $PATH.
• Run cabal update to update Cabal, which will generate a ~/.cabal/config and update the package list.

As of right now, Cabal's new Nix-style commands have replaced the old ones:

• cabal init: Create a project directory, and run this within it to initialize it as a Cabal project.
• cabal build: Will install project-only dependencies, on a per-project basis.
• ghc-pkg unregister should remove anything installed via cabal install.

• State "DONE" from "STRT" [2020-06-21 Sun 22:06]
• State "STRT" from "TODO" [2020-06-21 Sun 21:51]

Consider reading this, which seems to be the standard advice in #haskell. Probably too remedial for me, but at least take a peek at its recommendations.

Done. Not the worst advice, since it just tells you to install Stack, but still out of date. Already had the course it recommends first on the schedule. Took a peek at the second and didn't like the projects, so will skip that.

#### 1.2.4DONE get Haskell running on Pi 4B

• State "DONE" from "STRT" [2020-11-27 Fri 22:13]
• State "STRT" from "TODO" [2020-11-27 Fri 21:24]

Supposedly this is possible on any of the ARM 7 Pi boards (which doesn't include the Zero). https://www.haskell.org/ghc/blog/20200515-ghc-on-arm.html

The steps taken are detailed on this GHC article, but in case that disappears: First install llvm-9, then run:

wget http://downloads.haskell.org/~ghc/8.10.1/ghc-8.10.1-armv7-deb9-linux.tar.xz
tar -xf ghc-8.10.1-armv7-deb9-linux.tar.gz
cd ghc-8.10.1
./configure CONF_CC_OPTS_STAGE2="-marm -march=armv7-a" CFLAGS="-marm -march=armv7-a"
sudo make install


Looks like this will work, but my current 4B uses a 16GB SD card, so it runs out of space. Once I get a new 4B for the electronics bench, I'll use one of the 32GB cards for this, which should have enough room. I don't actually plan to do any programming on the reloading bench computer anyway, so not worth redoing the install on a new card.

Note that this doesn't use the standard ghcup install used elsewhere. Maybe check back in a few years to see if that's supported.

A 2016 book on everything in Learn You a Haskell for Great Good, but with extra detail. Sometimes criticized for its rigor at the expense of pragmatics. That sounds good to me though.

#### 1.2.6TODO learn Cabal 3

Read most of the Cabal docs to make sure I can do everything. Skim the less commonly used stuff and just mentally note it for future reference. I could theoretically just start writing Haskell after this, using just plain haskell-mode.

This is a merger, starting in 2020-01, of HIE and Ghcide. Deprecate Intero and replace it with this. By the time I get to using it seriously, this should hopefully have come together. Keep an eye on things though, since efforts like these seem to hit some kind of wall and go stagnant. I'm optimistic here.

If I get to this while it's still rough, default to a super-lightweight combo of haskell-mode, ormolu, and flycheck-haskell.

Called shm in ELPA. Like paredit, but for Haskell. AST-aware editing is generally faster once you overcome an overhead, though I'm not sure how true that is for Haskell. Looks like this has a stack build file now, but still requires an external executable. As a result, I'm deferring this until I really get into it.

#### 1.2.9TODO read What I Wish I Knew When Learning Haskell (essay)

A large compendium of all things Haskell. Supposedly good advice before going too far and repeating any mistakes.

#### 1.2.10TODO do course CIS 194: Introduction to Haskell

Maybe do this course and exercises, if I still feel like I need any remedial overview. If not, skip.

Already read this years ago, but read it again. Maybe check it yet again after I've got a decent amount of code.

#### 1.2.12TODO solve Ninety-Nine Haskell Problems list

One of the few problems lists available.

If I want a book with more exercises or in supplement to First Principles, read this. Might skip.

Read all these monad tutorials, or at least until they get boring and redundant:

The most recent full-course Haskell book, updated in 2016. Also includes exercises. A good candidate for doing all of.

A short paper just on the IO monad.

This was once the best Haskell book, but it's getting a little dated now. I might still read selected parts of it, however. It's supposedly still relevant in areas important to the Haskell practitioner. I probably will want to read this this up-to-date version.

Might skip this one, unless I'm doing a generalist math reeducation at the same time as my Haskell mastery task. I might also use it as a source of practice problems, since most books don't have any.

### 1.3INAC[/] research category theoretic libraries in Clojure

See which of cats and Fluokitten, if either, I prefer as a Clojure CT library. Currently I only use algo.generic in regular production code. Also determine to what extent going further in this direction makes sense in the language. I suspect going further than functors will result in fighting the language, but how much that is true is unknown.

#### 1.3.1INAC consider cats

Already used this a bit, but need to spend more time with it. If I recall correctly, it takes a record-based approach, with what are normally typeclasses being protocols.

#### 1.3.2INAC consider Fluokitten

Seems like a lesser amount of effort went into this than cats and is written by one guy, but it emphasizes being an idiomatic Clojure conversion of these concepts.

### 1.4INAC[/] attain Haskell mastery

Go from good Haskell programmer to dreaming in it. Combines the practical and theoretical approaches. Needs additional sub-tasks.

#### 1.4.1INAC read Kleisli arrows of outrageous fortune (paper)

One of those algebraic structures that occasionally come up in Haskell libraries.

#### 1.4.2INAC read Algebra-Driven Design (in development)

An in-progress book on algebraic abstraction. I think mastering properly encoding a domain into algebraic structures and taking advantage of what that gives you is the key to effective use of Haskell in the real world. So, this text might be exactly what I'm looking for at the intermediate level. Keep an eye on this book's listing on Leanpub.

Aims to take a competent Haskell programmer to one that programs at the type level. Available on Leanpub here.

#### 1.4.4INAC read Applying Type-Level and Generic Programming in Haskell (lecture notes)

Quickly read this when I get around to learning this topic, perhaps as an outline on subtopics. These are notes from a 2018 class on the topic occasionally given by consulting firm Well-Typed.

Lenses are a necessity in modern Haskell. Give this book a read if I get to intermediate level with the language and still find the concept not completely clear. Available in e-book form on Leanpub.

An in-progress book that covers a lot of aspects of actually using Haskell in production.

#### 1.4.7INAC consider polysemy

An alternative (better?) model than MTL for effect handling. A competing effort is fused-effects, also worth at least eyeballing.

A type system extension that allows for extra compile-time checking. Looks pretty amazing. Look into this after getting to intermediate Haskell skill.

## 2 computer science

### 2.1INAC[/] attain type theory mastery

• State "STRT" from "TODO" [2018-08-31 Fri 08:55]

I think my goals here are: advanced understanding of the concepts of type theory and understanding the links between type theory and various other subjects of interest. By the end, I'll be ready for approaching dependent types and possibly later homotopy type theory. The amount of tasks here might be overkill for my purposes, as I don't intend to write any type systems.

#### 2.1.1INAC read Type Theory and Formal Proof: An Introduction

Consider this as a introductory text to the topic. Sometimes comes recommended as a first stop, though this is rare compared to TAPL.

#### 2.1.2INAC setup opam

OCaml's package manager. Supports having multiple compiler versions. Read up on its idiomatic usage. Along with the OCaml package itself, just get this setup good enough to get some work done in and remove it all after completing work on TAPL (unless I somehow find permanent utility in keeping it around). Once done, I'll switch to one of the implementations in Haskell, or write one myself.

#### 2.1.3INAC setup tuareg

Seems to be the canonical OCaml mode for Emacs. Can be install via opam.

#### 2.1.4INAC find and read a quick OCaml tutorial

Learn basic OCaml ahead of time, so I can focus on topics in these later books. I know a bit of F#, so this should be rather easy. Will have to think about the best way to do this.

#### 2.1.5INAC read Types and Programming Languages

The famous text many have apparently used to attain a pragmatic level of expertise in type-theoretic models. Programming language type systems have a basis in the discipline of type theory, which this book gives a formal treatment of. Supposedly has aged well, with a downside being it uses OCaml as the implementation language. Some have done the problems here in Haskell, which I might consider. Online resources for the book are here.

Note that Philip Wadler recommends TAPL, followed by Proofs and Types, followed by ATAPL. Do the opam and tuareg yak shaving tasks before getting started.

#### 2.1.6INAC read Fun With Type Functions (paper)

A tutorial on type families.

#### 2.1.7INAC read Proofs and Types

A 1990 book by Girard. It looks like this ties together types with proof theory, λ-calculus, and logic. If so, that's just what's needed before moving on to ATAPL (as that expands the scope) and later dependent types.

A compendium of type theory papers, curated by Pierce. The point of the text is to explore the interactions of types as they influence various CS subfields. I'll probably give this a selected reading, given that I know some topics extend beyond my interest window. Includes a segue into dependent types.

#### 2.1.9INAC deprecate opam, tuareg, and OCaml environment

Once these other base type theory tasks are done, don't keep the OCaml stack around.

### 2.2INAC[/] attain base competence in automated theorem provers

This task links in with other tasks related to type theory, Haskell, and various language theory books, and is conceptually related to proof theory and category theory. The main goal here is to attain Agda (or Coq or Isabelle) mastery to the point where I'm either using it to write code in instead of writing in normal programming languages like Haskell, or at least be capable of doing this for more complex problems.

The reason someone would want to do such a thing is that if you can prove your solution in Agda using various type systems like Hindley-Milner and GADT, where types are propositions, and your solution is correct in the formal system you can prove it in any universal proof system.

If doing any work in Coq, check out this book, supposedly the best Coq tutorial around: http://adam.chlipala.net/cpdt/

Ties together and introduces the topics: software verification, proof assistants, functional programming, reasoning about the properties of programs, and using type systems for program guarantees. Depending on how this goes, I may read one or more other Coq books after or interspersed with this, or switch to Agda. This is broken into 4 smaller books, will re-assess once I see how Logical Foundations goes. Need to do some environment setup first before starting. I've done some of this already and it's a great book.

• Maybe install company-coq.
• Do exercises
• Consider doing the various exams from UPenn:
• Maybe watch the lectures from two classes on the subject:

### 2.3INAC[/] refresh λ-calculus and combinatory logic knowledge

I did a dive on this for research in preparation for a presentation. A few larger efforts later, my current master plan has me coming back around to it, where I'll do some gap-filling and link it to subsequent topics.

#### 2.3.1INAC read Lambda-Calculus and Combinators, An Introduction

This was recommended as a suitable introductory text for the λ-calculus and includes Schönfinkel's combinatory logic. Replacing An Introduction to Lambda Calculus for Computer Scientists with this one (which I didn't like after reading a couple chapters). Another option is An Introduction to Functional Programming Through Lambda Calculus.

#### 2.3.2INAC read To Mock a Mockingbird

An introduction to first class functions and construction to composition of combinatory logic combinators. These fundamentals are generally useful and could be a good introduction to various PLT topics. Have an e-book copy.

#### 2.3.3INAC read The Lambda Calculus

An extremely dense tome on the λ-calculus written by Barendregt himself. By the time I get to this, I'll know if it's worth the massive effort.

### 2.4INAC[2/4] do selected topics in compsci fundamentals reeducation

I've already done this a few times, and originally planned to always keep revisiting this from another angle. This one mainly focuses on algorithms and computability.

#### 2.4.1CNCL read The Annotated Turing

• State "CNCL" from "TODO" [2020-06-06 Sat 23:31]

A Charles Petzold book that works through Turing's 1936 paper On computable numbers, with an application to the Entscheidungsproblem.

Canceled in The Great Task Cleanup of 2020.

#### 2.4.2CNCL read Introduction to Algorithms

• State "CNCL" from "TODO" [2020-06-06 Sat 23:32]

The most used algorithms book (particularly at the gradschool level). I should definitely know everything herein cold, at least in outline form. Have the 3rd edition in PDF form and the 2nd edition in print.

Canceled in The Great Task Cleanup of 2020. A selected reading of this might be worth reconsidering later, depending on how higher priority goals go in the future. I'm mainly skipping this because of how most algorithm books assume imperative implementation. So, thinking about problems this way might actually be harmful in some cases.

#### 2.4.3INAC read Introduction to the Theory of Computation (3rd Ed.)

A book that supposedly reviews the fundamental theorems of computer science. This is a highly recommended book among Haskell programmers. Covers languages, automata, context-free grammars, computability, and complexity. Note that there's another book of the same title. The one I'm targeting is written by Sipser in 2012.

#### 2.4.4INAC read Practical Foundations for Programming Languages (2nd Ed.)

A book similar to TAPL, but updated in 2016 and not having full overlap. Written by Harper, CMU professor and author of the Existential Type blog. Judging from its increased terseness, I'm queuing it afterwards. Answers to the exercises are here. Need to buy a copy.

### 2.5INAC[/] master dependent type theory

Still thinking about what this will look like. I do generally prefer Agda > Coq, but since I have to learn Coq anyway for Software Foundations, might as well just stick with that. Apparently Proof General integrates with it nicely these days now too.

#### 2.5.1INAC read Dependent Types at Work (paper)

An introduction to dependent types in FP using Agda.

#### 2.5.2INAC read Why Dependent Types Matter (paper)

A formal methods paper describing the rationale behind Epigram. Probably won't get much out of this until some more preliminary formal methods studying is complete.

#### 2.5.3INAC read The Little Typer

An introduction to dependent types. Look into this a little more closely before deciding to read.

#### 2.5.4INAC read A Tutorial Implementation of a Dependently Typed Lambda Calculus

An implementation of dependent types for Haskell, I think. Might be a good example of extending a type system in this direction.

#### 2.5.5INAC read Intuitionistic Type Theory (paper)

I think this is a 1984 paper of collected Per Martin-Löf notes, introducing the topic. By the time I get to this, I should already know dependent type theory, so should have some context on how much effort to expend on this extension of it. Might break ITT out into its own task if so.

#### 2.5.6INAC read Type Theory and Functional Programming

After ITT came out, this book describes how it can be used in practice.

#### 2.5.7INAC read Programming in Martin-Löf's Type Theory

Same as coverage as Type Theory and Functional Programming, but different in style.

## 3 mathematics

### 3.1[0/6] do category theory reeducation

I've completed a high level pass on this in the form of study necessary to give a presentation on it. I now have better context for what a realistic self-driven course in the subject looks like. My goals are to be familiar enough with it to use as a general thought/communication tool and, as it intersects with my profession, to internalize the algebraic structures that can be used to model and design programs.

#### 3.1.1STRT read Conceptual Mathematics: A First Introduction to Categories (2nd Ed.)

• State "STRT" from "TODO" [2020-05-26 Tue 13:09]

Apparently one of the best category theory introductory books. Possibly a good choice for me since I've not done much work on this topic for over a year, minus using the programming language analogues.

#### 3.1.2TODO do course MATH198: Category Theory and Functional Programming

Consider doing this course as a review and assistance in keeping the focus on FP.

#### 3.1.3TODO read the Category Theory wikibook

Another option for comprehensive review with an eye towards FP.

#### 3.1.4TODO read Category Theory in Context

Looks comprehensive on the content I care about, and a good full details survey of the important subtopics. Probably will skip doing exercises to not get too bogged down.

#### 3.1.5TODO read Category Theory for the Sciences

Another supposedly great intro text. I don't feel comfortable with just one, so even in the best case, I'll give this one a try as well.

#### 3.1.6TODO read Applied Category Theory

An alternative to a supplementary full course reaffirming of the field. Glanced at my hard copy some and it seems good at that, plus unlike most texts, grounds concepts in application to models of systems. A great approach for functional programmers, who mostly are doing exactly that.

### 3.2INAC[/] attain abstract algebra semi-mastery

I've mostly picked this up by osmosis and directed study of sub-topics so far. Like with discrete mathematics, a comprehensive survey may prove useful to those pulling and unifying ideas from the various grouped disciplines.

#### 3.2.1INAC read Contemporary Abstract Algebra (8th Ed.)

Highly recommended as an ideal self-education text on this subject, supposedly optimal for self-study. I'll read this book first, then reevaluate whether to queue any texts on specific sub-topics, particularly group theory. I also have the solution sets for the problems here.

#### 3.2.2INAC read A Book of Abstract Algebra (2nd Ed.)

Supposedly a tour of the field, retaining rigor. Includes exercises. May be good for companion text.

### 3.3INAC[/] attain category theory mastery

There's two classes of CT texts, with one being extremely dense. A lot of that content is opaque to the uninitiated. This is an attempt to elevate and internalize CT knowledge to the point where such is digestible. Plan here needs some work, but partly is composed of comprehensive review (as I predict a gap between this and the previous foray into it) and a selected topics focus on concepts within.

#### 3.3.1INAC read Category Theory for Programmers

An online book, where chapters are posted in a blog. I've read a few of these and am unsure about the presentation, but will give it a try. Will use the EPUB version for light reading on the e-reader. Some examples are supposedly in C++, which I'll skip/skim.

#### 3.3.2INAC read A Taste of Category Theory for Computer Scientists (paper)

A lengthy 1988 paper by Benjamin Pierce. Only available in image PDF form, but could be useful as groundwork for Category Theory for Computer Science. Just read this without doing the exercises.

#### 3.3.3INAC read Category Theory for Computer Science

Based on my self-study plan for category theory, I should be super comfortable with the topic by the time I'm ready to read this extremely dense text. The goal is closing the gap from the abstract to application within CS, though if this book isn't useful in that regard I may bypass it and just go to the PLT application of the theory. There are multiple books with the same CT/CS focus, and this seems the most promising. Contains both exercises and solutions.

### 3.4INAC[/] do logic/proof theory reeducation

I should know all the main logic systems cold and be able to solve proofs in them in my sleep. I do kinda know this stuff, I just need to exercise those neural pathways and do a gaps check. If I feel like detouring for a couple months, I can integrate it into my CS/math (re-)education plan prior to doing abstract algebra.

#### 3.4.1INAC read How to Prove It: A Structured Approach

A college-level introduction to proof reading and writing. The goal here is to internalize thinking of the type required for solving proofs. If this ends up being inadequate, I can supplement this effort with Book of Proof (2nd Ed.) which also looks good.

#### 3.4.2INAC read Introduction to Logic (2nd Ed.)

This is a often-recommended self-study text on the subject, by Gensler. If I do read this book, I'll see about skipping the use of LogiCola, which is an application designed for use with the book. Since I've already taken classes on this subject and this is just for refresher purposes, I might just read it without doing exercises.

### 3.5INAC do graph theory reeducation

One of the most useful form of discrete mathematics I've made use of at work. Graph theory is still generally useful in life and often pops up in strange places in functional programming, like the applicability of graph algorithms to complex data structures or collections of them, despite them not necessarily being graph-based. Need to think about this some more to formulate an approach that doesn't waste any time though. Ideal would be a functional perspective of the topic.

### 3.6INAC read Concrete Mathematics: A Foundation for Computer Science

The most recommended math book for computer scientists. From what I've read of it previously, it seems to be a good sampling of things I've often encountered and occasionally wished I had a thoroughly solid grasp of. It is, however, mostly in the number-crunching realm, which is probably of limited utility for me. As a result, I'll defer this and come back around to it after I've reached my goals in pure math. Consider doing all the exercises in Maxima, which I'll need to redo the Emacs setup for.

## 4 software engineering

### 4.1DONE run vrms

• State "DONE" from "STRT" [2021-03-25 Thu 15:08]
• State "STRT" from "TODO" [2021-03-25 Thu 15:01]

Virtual RMS, which checks for non-free software on a system. Install this and see what it says. Might be worth knowing, in case I want to explore alternatives for end user applications.

Nothing interesting on my main workstation, just 6 libs, 1 font I'm not actually using, and the game Dwarf Fortress. My VM is completely clean, however.

### 4.2[1/8] consider Clojure web libraries

The most common form of real world Clojure application is an application that serves rich Web front ends. When I last reviewed the topic here, there was just Ring and Compojure. This is a boring topic and while that still works fine, a few nights spent surveying current best practices is probably not a bad use of time.

#### 4.2.1CNCL consider Peridot

• State "CNCL" from "TODO" [2020-06-12 Fri 09:31]

Full Ring testing with sequences of calls. Good for, say, testing a login sequence. Watch the first lightning talk here:

Canceled. I know this exists now, so will reconsider should the need arise.

#### 4.2.2TODO read Web Development with Clojure (2nd Ed.)

Since this book is from 2016, if I do read this it might be prudent to sanity check everything from it online afterwards. Maybe skip it altogether or read it very selectively. 3rd Ed. is in the works, so maybe hold off on this until then.

#### 4.2.3TODO consider duct

An application framework for Clojure. Seems to include all of the features and best practices I'm interested in.

#### 4.2.4TODO consider Pedestal

Give this a look. Some claim it's more lightweight than Ring+Compojure.

#### 4.2.5TODO consider Luminus

The most recommended Clojure web framework. Can also create a new project with lein new luminus +re-frame. Has some of the same criticism that Rails does though, in that it does everything for you. If things don't fit into the template, you end up without recourse.

#### 4.2.6TODO consider clojurice

A full stack web app setup in Clojure. Makes all the main architectural decisions. Worth looking at to compare against my best practices.

#### 4.2.7TODO consider reitit

A routing library, often used in combination with integrant/duck.

#### 4.2.8TODO consider alternative Clojure web frameworks

Give a super fast pass over all the remaining libraries available in the "Web Frameworks" category on The Clojure Toolbox.

### 4.3TODO learn GraphQL

An alternative to REST. At least get comfortable with language concepts, enough to determine whether I want to use it on various projects. Maybe check out GraphiQL, which is a GraphQL live editor/browser plugin, or something like that. Lacinia, is a GraphQL library by Walmart Labs.

### 4.4TODO consider clojure-lanterna

A Clojure wrapper around Lanterna, a Java terminal library. Give this a look and maybe try a quick test project to see if I want to use this in projects. Having an ncurses-esque option that doesn't suck would open up a lot of possibilities.

### 4.5TODO consider brick

A terminal interface library for Haskell. Haskell capability here would be a good option for many project ideas. Haskell on terminal applications is also free from a lot of the conceptual impedance of n-tier architecture.

### 4.6TODO consider transit-clj

Might want to use this to propagate types between front and back ends on an n-tier application that encodes data in JSON. Supposedly, this parsing is super fast (significantly more so than EDN). I don't think there's a need for it at the moment, but it's worth being aware of.

### 4.7TODO consider inlein

A Clojure scripting solution that can pull in dependencies, listed within the script file itself. http://inlein.org/

### 4.8INAC consider clojail

Check this out for embedded REPLs.

### 4.9INAC[/] consider Haskell web development

Clojure is the ideal FP solution for such things due to issues related to data vs. the network boundary. However, without some capability here, Haskell gets a lot less useful. Do another pass for resources before starting.

#### 4.9.1INAC read Developing Web Apps with Haskell and Yesod (2nd Ed.)

Attended a lecture on this and found this library at least technically interesting. Another Haskell web framework, Servant, is also popular now. Compare the two before investing a lot of time in Yesod.

A 2018 book. Supposedly covers all the essentials.

#### 4.9.3INAC consider IHP

Another Haskell web framework. This one seems interesting since it solves a lot of the rather impenetrable infrastructure needed to get the features it supports working. Supposedly this is in usable state and has been for some time. https://github.com/digitallyinduced/ihp

### 4.10INAC[/] research modern indie game development technologies

The main goal here is checking out the Clojure game engine libraries and seeing if there's a best option that covers some of my project ideas. Do a survey of available options before starting any of these, since this changes some over the years. Will also consider some supporting non-Clojure based game dev tools.

#### 4.10.1INAC consider Overtone

An audio engine in Clojure, wherein you write source and have audio generated programmatically. Could be a plausible alternative to externally generating audio files for games. Supposedly, this allows one to trade programming skill for musical skill.

#### 4.10.2INAC consider clojure2d

A small library for live 2D image manipulation, popular in "live coding" demos. Will just give it a quick try.

Has potential for implementing IF-style game ideas.

#### 4.10.4INAC consider zaffre

A library for drawing characters (sprites they might mean) to a screen.

#### 4.10.5INAC consider fn(fx)

A functional wrapper around Java FX. Use this for Clojure desktop application development. Deprecate all use of seesaw. Rewrite commercial-angler-clj in fn-fx. Consider using the garden library for CSS generation.

Alternatively: https://github.com/cljfx/cljfx (and cljfx/css)

Here's a blog article on the subject: http://nils-blum-oeste.net/functional-gui-programming-with-clojure-and-javafx-meet-halgarifn-fx/

#### 4.10.6INAC consider BitWig

Maybe look into this for normal audio creation. Ardour is another alternative. Both run on Linux.

#### 4.10.7INAC consider Krita

An open-source, free graphics program, seemingly great for drawing. Just give it a look.

#### 4.10.8INAC consider Unity engine for Clojure

Check out the free version of Unity to see how much work it is to use. Unity has become super popular lately, especially with indie games. Just get some context for the engine, then check out Arcadia, which integrates Clojure and Unity.

### 4.11INAC read Purely Functional Data Structures

Creating data structures in a typed FPL is something I do, but implementing their internals can benefit from some of the accumulated knowledge on the subject. This is the primary text that supposedly addresses that. This is a popular book for language designers, but some criticism I've heard there is that these data structures expose a bit too much complexity and sometimes are lacking in performance.

Probably a good example to learn some real world programming idioms in Haskell. Just give this a glance, since I don't actually want to write an IRC bot.

## 5 electronic engineering

### 5.1DONE replace PSU fan

• State "DONE" from "STRT" [2021-01-03 Sun 21:49]
• State "STRT" from "TODO" [2020-12-03 Thu 22:58]

This has a 2-pin header. Get a 3-pin Noctua and a 3->2 pin converter.

2020-12-03: A- ordered the fan and adapter.

2020-12-26: All parts arrived.

2021-01-03: Done and worked out nicely. Was a little bit of a pain doing this in a few spots, but not too bad. Managed to remove the stock fan without disconnecting the heatsink from the capacitor board. Re-glued the fan power to the mainboard, since it seems a bit loose without it. For future reference, the cover is a bit of a pain to get back on the unit, but bending the top front cover slot with a thin screwdriver when inserting it seems to make it go in easy.

### 5.2[18/18] build electronics workbench

#### 5.2.1DONE ponder extent of interest

• State "DONE" from "STRT" [2020-11-17 Tue 10:10]
• State "STRT" from "TODO" [2020-11-17 Tue 09:58]

Decide to what degree I want to invest time/energy into this side of technology. I don't want to overinvest here, such that it diminishing my available energy for my main interests in computer science. Scaled correctly, however, it could do well to complement them with real world effects.

Some things I'd like to be able to competently do:

• Construct simple, operable IoT-style devices.
• Be able to rewire components together.
• Understand the basics of electrical systems, which should hopefully transfer over to home and vehicle electrical systems.
• Have the tools and parts available to do the above.
• Stage ability for a (very) minor segue into vehicle electronics. Maybe I'll come up with some project ideas for the UTV.

Note on tools: I'll get a high quality multimeter, since I can use that elsewhere. Soldering iron, mat, and power supply should be mid-range. Everything else should be price-optimized for now. Once I see how much time I'm spending on this, I'll consider adding an oscilloscope and other items. I'll also need to setup a spare computer in the main indoors workshop. Keep total budget under $1000 (preferably under$700 or so), which means no new dedicated full computers, nice monitors, or high-end/professional tools.

Note on self-education: I'd rather take the time to learn this formally. Get some general context first, then select a textbook on the subject.

I think this plan is good enough for initial task breakout. Will revisit later.

#### 5.2.2DONE get knips

• State "DONE" from "STRT" [2020-11-23 Mon 13:43]
• State "STRT" from "TODO" [2020-11-18 Wed 21:27]

Get the KNIPEX brand ones. Apart from electronics, also generally useful.

2020-11-18: A- ordered a pair for me.

#### 5.2.3DONE research power supplies

• State "DONE" from "STRT" [2020-11-23 Mon 21:31]
• State "STRT" from "TODO" [2020-11-20 Fri 11:14]

Don't get one of these yet, but I'll want one eventually. Might want to see what's cheap used.

For new PSUs, though it has some problems, the BK Precision 1550 might be a good compromise. Slightly pricier though of maybe higher quality is the Unisource PS-303. At least get one of 30V 3A.

Decided against both of the previously mentioned. If I stick in bottom tier price range, which I'm sure I want to, I'll get the KORAD KA3005D. This is also Chinesium, but at least includes a output toggle and is programmable for less than the other options. If I ever decide to upgrade later, consider the Keysight U8000 or Tektronix PWS2326. I don't foresee myself getting that into this hobby though, so it's probably safe to go cheap.

#### 5.2.4DONE consider dedicated workbench Pi

• State "DONE" from "STRT" [2020-11-23 Mon 14:20]
• State "STRT" from "TODO" [2020-11-18 Wed 00:29]

Maybe get another one of these for the electronics bench as the primary dev computer. Will need an LCD panel of some kind for it.

Another option is the Pi 4 compute module, IO board, and antenna kit. This provides all the capability of the 4B, but with more accessible outputs for projects. Performance is also much better. Leaning towards this, but will have to wait until these items are available.

2020-11-18: Ordered. Decided to get a Pi Zero W and use that in the reloading room and put the 4B on the electronics bench. First, I'll build out the Zero and get a HDMI->DVI adapter so I can save some cash on a display by using the old Dell 2007. Once all of this is setup, then I'll think about whether I want to do a swap with the 4B for the electronics bench or something else. This prevents me from blowing money on hats and other accessories for the Zero if I don't want to go that route for the wearable or palmtop. Later the decommissioned desktop will go down here for a proper computer, and the 4B can be a dedicated project board.

Also ordered various connectors and adapters for this and the 4B. The 20000 mAh power bank I was eyeing also had a $10 off coupon, so I grabbed one of those too. #### 5.2.5DONE get ESD tweezers • State "DONE" from "STRT" [2020-11-25 Wed 18:20] • State "STRT" from "TODO" [2020-11-19 Thu 20:17] Needed for the very small stuff I'll be working on. 2020-11-19: Ordered the EDSYN EPAA-SA-EG from Test Equipment Depot. These are medium-sized straight tip. Might want a curved set later, but I'll see if I can get by with these, since they were on sale. 2020-11-25: Received. #### 5.2.6DONE assemble Zero W build • State "DONE" from "STRT" [2020-11-26 Thu 01:15] • State "STRT" from "TODO" [2020-11-23 Mon 14:24] Assemble the Zero W setup above. All parts already ordered. I'll also test the power bank on this to see runtime. 2020-11-23: Received HDMI->DVI adapter. 2020-11-24: Received microSD cards, micro-USB->USB adapter. Installed latest Raspberry Pi OS on one of the cards. Didn't set any monitor configs on it yet, since I'll set it up on a normal peripheral config first to save time. 2020-11-25: Received Zero W and all remaining parts. One big downside I discovered of this board is that since it's an older ARM, it doesn't support Clojure development (at least lein doesn't run, and I only want to use lein). This is a strong reason to stick with the 4B except for very minimal projects that need low power draw, and for using the 4B for a dev board that other microcontroller boards will connect to. However, for the reloading room computer, this doesn't matter. Looks like Haskell development is still possible, strangely enough since it's usually the other way around. I also didn't realize it at the time, but the Zero doesn't have any audio port. Maybe building a sound card for it would be a good project. Anyway, I switched back to my original plan of putting the Zero on the electronics bench for now. This was due to a combination of no sound and that the cables I have for it are all the wrong lengths for the reloading bench. This results in it sitting on the desktop with a mess of cables. Rectifiable, but would involve buying more cables of appropriate length, which isn't worth the trouble. The Zero will serve immediate needs in the workshop for now, until I need a board with more power for some reason. #### 5.2.7DONE get magnifying lamp • State "DONE" from "STRT" [2020-11-26 Thu 01:16] • State "STRT" from "TODO" [2020-11-19 Thu 20:16] Current contacts prescription makes me slightly farsighted, so this is kinda needed. Get a Luxo probably, since the cheap Chinese ones are kinda crap. 2020-11-19: Ordered the Luxo LFG028215 from Test Equipment Depot. These are a little pricier than I thought they'd be, and kinda ruins the low end of my intended budget range a little. Will still try to keep it under$800 for everything though.

2020-11-26: Installed. Looks great. Glad I went with the nicer model. Will keep the cover on it while not in use.

#### 5.2.8DONE get multimeter

• State "DONE" from "STRT" [2020-11-26 Thu 01:37]
• State "STRT" from "TODO" [2020-11-19 Thu 20:16]

Probably will get a low end Fluke.

2020-11-19: Ordered the Fluke 117 from Test Equipment Depot. I think this comes with leads, but can get those later if not.

2020-11-25: Received. Will test out a bit.

2020-11-26: Unboxed and set on bench. Tested and seems great.

#### 5.2.9DONE get power supply

• State "DONE" from "STRT" [2020-12-01 Tue 21:28]
• State "STRT" from "TODO" [2020-11-27 Fri 10:43]

The KORAD KA3005D will probably do the job for $110, so maybe get this. Not immediately critical though, so skip for now if I want to spend the Black Friday cash elsewhere. Check for name brand units on eBay before buying. 2020-11-27: Ordered the KA3005D. Debated this versus some of the pricier used ones on eBay, but decided to cheap out on this for a first supply. Reasons are that I'll probably build one of my own at some point, none of the eBay ones were completely optimal, and this keeps me in budget. I'm not against getting a proper high end one at some point, but I'll know whether that makes sense after using this a bit. Should be no problem selling this one used if need be. Once I get this, check to see if other electronics flicker when switching this on/off. If so, add a ferrite bead clamp to the PSU's power cable. Probably will have to raise the shelf height on the desk for this, but I'll hold off until it arrives. 2020-11-28: Apparently the fan on the Korad is loud, but there exist various mods for this. The ultimate is a temperature control mod + fan replacement. I'll probably just replace the fan with a Noctua if mine is loud, as I'm fairly sure this will be good enough. To do this, I'll either need a 3-to-2 pin adapter or to cut/splice the wiring. Preferring the former, since it doesn't mess up resale options. Another common mod is to reduce the noise of the buzzer by applying a drop of hot glue to the buzzer component opening. Also, open the case up and check all screws and heat sinks before using. Some people report these can be loose. 2020-12-01: Received. The fan didn't seem bad at first, but did get a little annoying. It's probably worth replacing. Otherwise, I tested it with the multimeter and it's very accurate with fast response time. The leads are a little short, but good enough for working directly on the bench. #### 5.2.10DONE setup bench desktop PC • State "DONE" from "STRT" [2020-12-01 Tue 21:30] • State "STRT" from "TODO" [2020-12-01 Tue 10:04] Put a zero-maintenance Linux setup on here and see if I can get all of the hardware working. Don't put any effort into this setup, since I may need to switch the OS later for software support. 2020-12-01: Tried Manjaro-i3, since I already have a full config for it. However, looks like there's issues with the wireless adapter, which works but only sort of. Switched to a stock Debian install to see if that problem persisted there, and it does, but not as much. Will stick with that for now since I'd rather not buy a wireless adapter for this. What I'll probably do is keep this down here until I upgrade the NUC, probably with one of the micro Ryzen machines (unless something better is around by then). Then the NUC can go down here. That'll be a couple years from now though, at the soonest. #### 5.2.11DONE get 2 power strips • State "DONE" from "STRT" [2020-12-09 Wed 21:10] • State "STRT" from "TODO" [2020-11-27 Fri 10:40] Get one for all of the equipment, then a desk mount one with USB ports for powering stuff being worked on. 2020-11-26: Found a spare floor power strip, so will use this. Now just need the desk mount one. 2020-11-27: Ordered desk mount strip. 2020-12-09: Received and setup. Now I can just flip the switch on this power strip and be sure everything is powered off. #### 5.2.12DONE get solder roll • State "DONE" from "STRT" [2020-12-09 Wed 21:11] • State "STRT" from "TODO" [2020-11-27 Fri 10:42] Get a 1lb thin rosin core, like maybe the Kester 24-6337-8800. 2020-11-27: Ordered, along with solder wick and flux pen. While grocery shopping, I also grabbed a pack of steel scour pads. Will see if this works okay for tip cleaning. Seems like the ones they sell for this purpose might be brass, but I can't think of a good metallurgical reason why steel wouldn't do fine here too. If this works, I'll build a holder for it. 2020-12-09: This arrived a week or so ago. Noticed that this is lead solder, so might want to get a lead-free one later. #### 5.2.13DONE get kit for solder practice • State "DONE" from "STRT" [2020-12-11 Fri 13:36] • State "STRT" from "TODO" [2020-11-27 Fri 10:40] Find a cheap DIY kit of some kind for practicing soldering, since I've never done it before. Leaning towards one of the speaker kits for sale on Amazon for ~$19, since it includes 2 SMD components. Plus I might be able to actually use them if they don't sound too horrible.

2020-11-27: Ordered the speaker kit.

2020-12-11: Kit arrived. Need replacement solder station before proceeding.

#### 5.2.14DONE get another 4B

• State "DONE" from "STRT" [2020-12-13 Sun 22:13]
• State "STRT" from "TODO" [2020-12-02 Wed 23:18]

Was debating on whether to get a compute module or just another 4B, but the IO boards seem to be in short supply. Plus, it's a much more expensive platform. Will just get another 4B for now and keep the Zero for a project build.

2020-12-02: Ordered along with another HDMI cable, heat sink set, and power switch. I might also work a bit on slimming down the base OS to get the Zero to run faster. There's definitely a lot of bloat there.

2020-12-13: Received and tested as functional, at least with no OS.

#### 5.2.15DONE get soldering station

• State "DONE" from "STRT" [2020-12-21 Mon 13:17]
• State "STRT" from "TODO" [2020-11-19 Thu 20:17]

Just get the base station for now. Get at least one very fine tip.

2020-11-19: Ordered the Weller WE1010 from Test Equipment Depot. Also ordered a 0.38mm conical tip. I'll see if I can just buy a kitchen scour pad and maybe 3D print a holder for it later.

2020-11-26: Unboxed and the station base is smashed and very broken. Emailed sales to see if I can get an exchange or refund.

2020-11-30: Called in the issue. They said they were short staffed and haven't gotten to it yet, but will look at it.

2020-12-08: A- called again and they finally sent an RMA, though won't pay shipping. These guys suck. Guess I'll take my business elsewhere next time, even if this does get resolved. Even crappy Amazon would've been better than this. Will switch to tequipment.net.

2020-12-09: Item mailed back. Cost was $15. 2020-12-16: Got tracking notification for replacement. 2020-12-21: Received replacement and tested as working. Finally resolved this whole unpleasant experience. #### 5.2.16CNCL try Manjaro ARM on the 4B • State "CNCL" from "TODO" [2021-01-02 Sat 20:35] Under their downloads for the Raspberry Pi, they have a port of the 64-bit i3 version of this distro. This might make for an excellent electronics bench OS install if I can get everything working correctly. Tried this, but nothing ever shows on screen. Seems to run, so could probably SSH in and mess with the video settings if I decide to run a 4B as a desktop one day. In the meantime, I just switched back to Raspberry Pi OS. #### 5.2.17DONE get a few starter parts • State "DONE" from "STRT" [2021-01-08 Fri 10:14] • State "STRT" from "TODO" [2020-11-27 Fri 10:41] To get started, get one of the kits with tons of parts. This will save some money on buying them separately, probably. Get one compatible with the Pi for now, but maybe switch to a Arduino/Nano kit later. Get a few spare parts and small tools I know I'll need while I'm at it. 2020-11-27: Decided to take advantage of a sale and get one of the knock-off Uno board kits, which saves a lot of cash. I'll still get the Pi kit later, once it goes back on sale. Also ordered: • Glue gun. • Pack of breadboards. • Board holder. • Engineer ruler. • Soldering wick. 2020-11-27: Pi kit came back on sale, so got that too. Will use this first and then the Arduino one later when I get around to it. Also got some Knipex electrician shears for cutting thick wires (more for working on house wiring than this stuff). 2020-12-01: Received solder, flux pen, Pi kit. 2020-12-03: A- ordered a 3-pack of Nano boards. These were on sale for ~$10, so definitely a good deal.

2020-12-10: Received ruler and board holder.

2020-12-12: Something happened to the electrical scissors in transit and I guess I'll get a refund for it.

2020-12-19: Looks like wick was lost in transit too. Reordered.

2020-12-21: A- ordered a 3 pack of Nano boards for me, which arrived.

2021-01-08: Finally got wick, which was the last piece for now.

#### 5.2.18DONE collect parts list

• State "DONE" from "TODO" [2021-01-09 Sat 04:11]

Probably won't get to the point of needing additional project materials until next winter. While doing starter projects, collect a list of electronics parts to buy and order them all at once from somewhere, like sparkfun.com or allelectronics.com.

List:

• 10+ metal toggle switches, and maybe a few of the ones with covers.
• Kits (or boxes) of capacitors, resistors, diodes, transistors. Like the Elenco branded kind (e.g. RCK-465).
• Hookup wire kit, which is a rectangular box with multiple wire colors coming out of it.
• Prototype board: Global Specialties PB-103M
• A pair of the test probes capable of grabbing wires. Pomona makes some of these and are high quality.
• A few 9V I-type battery snaps with 5" leads.
• Jumper wire assortment.
• Various LEDs.
• Heat shrink tubing assortment.
• A few character LCDs.
• Many momentary buttons of various types.
• A set of cheap solder tips.
• Consider a parts storage solution, like the Arko-Mils shelving units.

Probably will order this stuff over the summer so it's available when needed.

### 5.3[3/8] learn introductory EE

The plan is to attack this from both ends, theory and hands-on, hopefully meeting in the middle.

Will try to read some of these garbage Pi-specific books, since any useful info in them is immediately actionable. Then I'll do a proper formal introduction via textbooks.

#### 5.3.1CNCL read Raspberry Pi: A Step by Step Guide

• State "CNCL" from "STRT" [2020-11-19 Thu 23:54]
• State "STRT" from "TODO" [2020-11-19 Thu 23:25]

Looks like this book is mostly filler, but has a few chapters that might be useful. This is one of the most recent books.

Despite coming out in 2020, very outdated. Also riddled with typos and bad grammar. Quitting after seeing multiple technical errors.

#### 5.3.2CNCL read Raspberry Pi Beginners Guide

• State "CNCL" from "STRT" [2020-11-20 Fri 00:02]
• State "STRT" from "TODO" [2020-11-19 Thu 23:57]

An even more trashy looking book, and very short. But specific to the Pi 4, so will give it a skim.

#### 5.3.3DONE read Science and Engineering Projects Using the Arduino and Raspberry Pi

• State "DONE" from "STRT" [2020-12-24 Thu 20:48]
• State "STRT" from "TODO" [2020-11-20 Fri 00:02]

Seems mostly filler, but maybe skim this for Arduino info.

Not terrible, but only by comparison. Some strange combination of contents though, and appears to be rather hastily assembled.

• State "STRT" from "TODO" [2020-12-24 Thu 20:48]

Might be an unnecessary text since I already have a plan for this, but will give a quick skim.

Strange book. Useless content, rambling on for pages about basic stuff like getting enough sleep and drinking water, yet written in a style that kept me reading the whole thing.

#### 5.3.5TODO read Practical Electronics for Inventors

Looks like a great intro book, assuming little, which at this point I prefer.

#### 5.3.6TODO read Getting Started in Electronics

A often-recommended first read. Might skip if the previously scheduled book covers this stuff good enough.

#### 5.3.7TODO read Electronics for Beginners

A recent 2020 book. Seems a little more in-depth, covering more complex microelectronic components. As such, might be a good bridge to the next level.

Probably won't read this, but leaving a note here just in case there's any gray areas. Supposedly quite good, and builds from nothing up to complex circuits. https://www.allaboutcircuits.com/textbook/

### 5.4[1/6] learn basic EE hands-on skills

#### 5.4.1DONE do LED hello world

• State "DONE" from "STRT" [2020-12-01 Tue 21:20]
• State "STRT" from "TODO" [2020-12-01 Tue 20:34]

Wire up the PSU with a single LED and resistor for a first breadboarding attempt.

Done. LED cathode (-) is shorter, anode (+) is longer. Looks like I kinda know what I'm doing now and everything works, so will proceed to do some tutorials.

#### 5.4.2STRT do Pi kit tutorials

• State "STRT" from "TODO" [2020-12-02 Wed 21:20]

Go through most of these, maybe skipping the soldering at the end to preserve the components. GitHub repo: https://github.com/Freenove/Freenove_Ultimate_Starter_Kit_for_Raspberry_Pi

Notes:

• The C projects use wiringPi, a library that can be install via apt. Looks like this comes by default on Raspberry Pi OS. This adds a gpio -v command, which confirms install and shows some info. gpio readall outputs a table of all GPIO pin values. See manpage for more uses. Note that the 4B needs version >=2.52. To manually update to latest:

wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb

• To do the Python examples, which are in Python 3, I symlinked python3 to bin/python.
• Pins supporting PWM: 12, 13, 18.
• For I2C, enable it in raspi-config, then install package i2c-tools (already there in Raspberry Pi OS). This has a utility for detecting I2C addresses. Run with i2cdetect -y 1. Values here are in hex. Related is the smbus Python package.

This tutorial has got Engrish, typos, broken code (at least in the PDF), and poorly written code. I know enough C and Python to get everything working, but this would definitely hinder or block a n00b. After Ch.1, decided to stick with Python for these to save some redundancy. Tried to do as much of the wiring and programming myself without looking at their solution, though in a lot of cases this isn't possible.

#### 5.4.6TODO consider free circuit simulators

Go through some of these and find one that doesn't suck. List here: https://en.wikipedia.org/wiki/List_of_free_electronics_circuit_simulators

Raspberry Pi OS already comes with SmartSim, so might start there. There's also LTspice for Windows, which seems popular. ngspice is available for Linux.

### 5.5TODO get ESD mat

Measure area. Probably just get the 2-layer. Maybe get one from this guy: https://www.ebay.com/usr/canvu0_0

Desk is 37"x48". Debating on whether I want a perfectly form-fitting one or something else. I've been operating with no mat for awhile and this doesn't seem super necessary, so considering lower priority.

### 5.6TODO consider pigpio

A timing lib for Pi GPIO. Python binding available. http://abyz.me.uk/rpi/pigpio/

### 5.7[/] start programming in Clojure on Pi

#### 5.7.1TODO read existing Pi+Clojure resources

Turns out there's at least a small but active community of people interested in doing both of these things at the same time, like myself. Collect some links and read all of them once I get past the basic stuff (which I'll go ahead and still do in Python, so I can focus on the hardware while starting). Should save a lot of frustration and experimentation on my part.

#### 5.7.2TODO consider clj-gpio

Was originally going to try to get GPIO interfacing working in Java, then in Clojure using interop, then writing a wrapper library. Unsurprisingly, someone already did this. Confirm this works on the Zero and later 4B. Looks like it uses core.async for responding to GPIO events.

#### 5.7.3TODO consider linux.gpio.clj

More recent than clj-gpio.

#### 5.7.4TODO recreate some earlier labs in Clojure

Maybe do a LED hello world and then one that combines a few features.

### 5.8INAC[/] learn basic microelectronics

Select and read 1-2 of common university texts used in the early courses in university programs focused on circuit design or similar. This is probably the extent of the depth of research I want to conduct.

#### 5.8.1TODO read Introduction to Electronics

If sequenced here as a review, would cover the fundamentals to logic gates.

Have an older hardcopy of this, but will get an e-book version of the 8th edition and read that more casually. Will use the hardcopy as a desk reference if needed. Includes a little digital content.

Of the main 4 common component-based textbooks, I'm defaulting to this one since I have the hardcopy, but consider the others too:

• Electronic Devices: Conventional Current Version
• Electronic Principles
• Electronic Devices and Circuit Theory

#### 5.8.3TODO read The Art of Electronics

Supposedly the authoritative tome on circuit design. Might want to get a physical copy for the bench, but will try an e-book first. There's also Learning the Art of Electronics: A Hands-On Lab Course and The Art of Electronics: The X Chapters as complimentary texts.

## 6 work

### 6.1CNCL research Berkeley DB

• State "CNCL" from "TODO" [2021-01-13 Wed 12:07]

Read Oracle's Getting Started Guide for this. Maybe write a quick program reading from and writing to it, time permitting. I did read up on this a good bit previously, so maybe fill in the conceptual gaps. I may also consider thinking deeply about this, in regards to what the ideal Clojure DAL on top of it would look like.

2020-11-04: Holding off on this due to a potential upcoming DB switch.

2021-01-13: Looks like the datastore switch is locked in, so canceling this.

### 6.2DONE refresh/update MongoDB knowledge

• State "DONE" from "STRT" [2021-02-27 Sat 21:36]
• State "STRT" from "TODO" [2021-02-23 Tue 11:39]

Haven't really used this much since late 2.x/early 3.x. I know there's some new features that might be project-relevant, like searching. Looks like due to various issues, I should focus on 3.6 currently. A 4.x upgrade might be forthcoming though (which will support transactions). Will read all or most of the 3.6 manual:

Good enough for now. Will pick up the rest of it along the way.

### 6.3DONE write MongoDB DAL

• State "DONE" from "STRT" [2021-03-21 Sun 17:46]
• State "STRT" from "TODO" [2021-02-25 Thu 21:52]

Consider writing a new DAL for MongoDB, including some built-in relationship tracking/updating and various other features.

Done, for the most part. Ended up splitting this into a DB wrapper and DAL layer, with the latter being domain-aware.

## 7 technology/software

### 7.1DONE consider renaming Org status labels

• State "DONE" from "STRT" [2021-01-13 Wed 11:57]
• State "STRT" from "TODO" [2021-01-13 Wed 08:46]

Maybe make all of these 4 characters. STARTED would become STRT, for example. This would make eyeballing files faster, since the task text would all line up. This wouldn't do anything for the composite tasks, however.

For composite tasks, this is probably still worth the tradeoff vs tagging those too. A status can be attached to a composite task, but only the completion ratio is auto-updated, not the group tag.

Done. Updated all Org documents. New status names are STRT, CNCL, BLCK, and INAC. This definitely improves readability, lessening the visual noise of status tags and making outlines more content-centric.

### 7.2CNCL consider Dasung Paperlike 3 HD-FT

• State "CNCL" from "TODO" [2021-02-24 Wed 08:20]

Might be a good choice for an e-ink monitor in an always-on programming environment, like one of the Pis. Has super fast refresh modes.

Main downsides are the 13.3" size and a price of $1100. Other minor complaints: huge bezel, ugly branding, limited mount options, side connector, and Chinesium build quality. So, not even close to something I'd want to use. Maybe I'll check back in a few years to see if there's better options around. ### 7.3[1/2] build wearable computer #### 7.3.1DONE design wearable computer • State "DONE" from "STRT" [2020-11-17 Tue 09:28] • State "STRT" from "TODO" [2020-11-16 Mon 21:48] Thinking the rPi Zero W, UPS battery, and the Vufine+ display. With my wireless mini-keyboard, this should be a fully functional wearable, good enough for SSH-ing into servers, reading e-books, taking notes, and other random computing. Display: The Vufine+ display is the only expensive part, at$200. Maybe get the unbranded version.

Battery: I think the PiJuice Zero is out now. However, the Vufine only has 90 of runtime in its internal battery. I might want to go with a power bank that has 2 USB-C adapters, thus able to power both for many hours. Of course, I could still use the PiJuice, but that could be a later addition if I think it needs it. Going power bank means the computer needs to turn off to charge.

Cables: Will need an HDMI cable of appropriate length, maybe 2.5' to 3'. The Pi side is mini-HDMI. I think the Vufine side is full HDMI.

Keyboard: Instead of the mini-keyboard, I might want the Rii K22, which is full size. Either will need a micro-USB->USB dongle.

I think I could try a lower risk workflow for this by just getting the battery pack first and trying to run the 4B off it. Then I could get the display and use that with it and see if I can get the config.txt settings correct. If all that works, then get the Zero W or maybe even just go with the 4B for the wearable setup.

#### 7.3.2STRT redesign wearable computer

• State "STRT" from "TODO" [2020-11-17 Tue 09:29]

Had some additional ideas, though I like the previous approach so will keep it archived. I may do something more like that with the Zero W, but for now I want to keep investment minimal.

Design:

• Board: Use current 4B.
• UPS: PiSugar 2 Pro. This one does support UPS.
• Display: Vufine+ unbranded, magnetic mount, generic non-prescription glasses.

This design will allow my power bank to be hooked up for longer sessions, otherwise keeps it light for short-term usage.

### 10.3DONE briefly play Lineage 2 Essence

• State "DONE" from "STRT" [2021-01-11 Mon 15:57]
• State "STRT" from "TODO" [2021-01-09 Sat 23:55]

I think this is a built-in botting version of L2, maybe forked from an older version of the base game. Classes have been rebalanced for solo-farming. Supposedly this is RMT hell once you get to the PVP content, which is the main focus. Be sure to uninstall the crapware launcher when done. https://eu.4game.com/lineage2essence/

A real mess. The auto-farming does work and is better than actually killing stuff manually, but is a bit simplistic. Bot mode isn't smart about skill use and will keep plowing ahead when you run out of consumables. Also seems to not be viable with a non-twink caster.

Got a DE up to 45, but don't feel like dealing with the next auto-farming zone with all of the aggro mobs. So, quitting.

### 10.4DONE play rust-mini-games

• State "DONE" from "STRT" [2021-02-13 Sat 20:01]
• State "STRT" from "TODO" [2021-02-10 Wed 21:15]

Try a couple of these and check out the source code for any interesting ones. https://github.com/Syn-Nine/rust-mini-games

Games tried:

• Asylum: This is supposed to be a choose your own adventure game. Pretty simple and more of a very short puzzle game, since you have to do things in order to complete it successfully.
• Legend of the Rusty Dragon: Reminds me of an old DOS game I used to play called Braminar. This one is pretty lame by comparison.

Took a peek at the source for Rusty Dragon, and it's very basic procedural code. Wouldn't want to actually structure a real game this way.

### 10.5CNCL play Rusted Ruins

• State "CNCL" from "STRT" [2021-02-13 Sat 20:44]
• State "STRT" from "TODO" [2021-02-13 Sat 20:30]

Of the OSS games in Rust out there, this open world RPG seems the most interesting to actually play (though probably still not actually good). https://github.com/garkimasera/rusted-ruins

The makepak binary compilation fails. Don't really feel like fixing this and whatever other problems come next, so skipping.

### 10.6DONE play Nethack

• State "DONE" from "STRT" [2021-03-21 Sun 22:34]
• State "STRT" from "TODO" [2021-02-27 Sat 20:25]

Develop/refresh some Nethack skills. Will play this occasionally for a few weeks.

Notes:

• Start a terminal with kitty -o font_size=30 -o disable_ligatures=always if playing fullscreen on a 2560x1440 screen.
• Alternatively, make an account and play on nethack.alt.org. The bot in #nethack is tied to this. Probably will do this to use the curses interface.
• For tourists, try not to advance darts too much since you'll want the skill slots other stuff. Probably Magicbane is the best artifact choice, so raising dagger skill is a good idea.
• S-a will select all in a selection list.

Playing on nethack.alt.org. Will stick with this unless stuck offline somewhere. I think my favorite classes are wizard, tourist, and maybe healer.

Done for now, I guess. Definitely a lot better at the game now. Once I've finished most of the one-off games off this list, it's time to really master Nethack and attempt to actually ascend a character (something that has always been one of my goals in life).

### 10.7STRT play Divinity: Original Sin 2 Definitive Edition

• State "STRT" from "TODO" [2019-07-21 Sun 23:34]

Got on GOG sale as gift.

### 10.8STRT play Underrail: Expedition

• State "STRT" from "TODO" [2019-10-23 Wed 09:32]

An expansion to the base game that adds a side story line and some new progression. Grabbed on release for $7. Created a pure psi build first, which is definitely an interesting class, but not quite my thing. Decided to switch to a chemical/energy pistol build, which ended up being more interesting. However, that run became bugged, so restarted with a chemical/energy pistol + temporal manipulation build on hard difficulty. This is a pretty big expansion, worthy of extra cost. The main downside is the content itself is often a bit too straight-forward, lacking some of the more clever solutions often present in the main campaign. Notes: • Unless this gets patched, be sure to always do the expansion area all at once so I don't end up with a blocked game again. • To meet Azif, be sure not to mention the general clue about the murder victim being bad at his job during the Meet Lenox quest. I collected high end crafting materials for a crafting psi build, if I want to do another run at some point. This would also allow for interacting with the monolith/pillars. However, I'll definitely take a break for a few years to play other stuff and in case another expansion comes out. ### 10.9TODO play Brogue Community Edition A popular and more recent full-featured roguelike. For this game, 1.7.5 is conjectured to be the final official version. As such, the CE continues development while staying conservative about changes. This is a much simpler game than Nethack, so might not spend much time on it or keep it around. It also requires X to play. ### 10.10TODO play Wizardry 8 Decided to skip 7 and go straight to 8. Grabbed on sale for$2.49.

Notes:

• Hit Control+Alt when entering names to enable typing if not working.

### 10.22INAC play Disco Elysium (purchase)

Looks good. Been interested in the idea of a non-combat focused isometric RPG for awhile now. Will wait to see if there's expansions first though. Also need to do a wokeness check on it before buying.

### 10.23INAC consider Pathfinder: Kingmaker (purchase)

A BG-esque RPG based on the Pathfinder ruleset. A good chance I'll skip, since Pathfinder always struck me as a bit too direct of a ripoff of D&D 3.5 and recently they've gone full SJW. Also has season passes and a lot of bugs.

### 10.24INAC consider X4: Foundations (purchase)

Now out in late 2018, but wait 2-3 years for all the patches and expansions to be included in a total package. At casual glance, it looks like it might be a proper X game, though I'm less enthusiastic about the genre these days. Expansion pack is also available as of 2020-03. Second expansion coming late 2020.

### 10.25INAC play Cold Waters (purchase)

A new sub-sim. Give this one until at least 2020 if they add some features hinted at, like the ability to play as Soviet units. Before purchasing, check on whether updates are going to GOG like they are to Steam.

### 10.26INAC play Objects in Space (purchase)

Similar to the space game I've always wanted to make, where subsim-style gameplay is used. Wait for a sale and get on GOG.

Update: Looks like development here was abandoned. Might still be worth playing, but wait for a deep sale, like around $5, if that even. Some stuff is left very broken. Apparently also has some kind of Arduino integration (building a helmet perhaps). ### 10.27INAC consider Ultimate Admiral: Dreadnoughts (in development) Looks good, but wait until release or well afterwards. ### 10.28INAC consider Alliance Space Guard (in development) A hardcore space sim, similar to Rogue System in design goals. Looks great so far, but wait until actually done before buying. https://alliancespaceguard.com/ ### 10.29INAC play Baldur's Gate 3 (in development) In early access as of 2020-11. Looks suitably complex. No release date scheduled yet. ### 10.30INAC consider Starsector (in development) Looks like a promising 2D top-down space sim. Combat and nav happen on different maps and fleets can be built and controlled. ## 11 general topics ### 11.1DONE read The Monadology • State "DONE" from "STRT" [2021-01-17 Sun 20:44] • State "STRT" from "TODO" [2021-01-17 Sun 17:46] The first use of the term monad was by ancient Greek philosophers, but the more commonly encountered version of it is Leibniz's metaphysical re-imagining. He uses it to represent the indivisible elementary particle. Consequently, Leibniz is considered to be a monist, in the modern Western philosophical tradition. Unaware of any link between these to the mathematical concept, but sometimes it comes up in discussion anyway and is probably worth knowing about as a result. I suppose this paper is more of a proposal for a complete philosophical system, since it seems to jump around to different topics. Not sure I appreciate it too much though, since it's a bunch of naked assertions that have now-obvious problems given knowledge acquired since then. To be fair, I think this text wasn't meant to be a persuasive or comprehensive treatise on the subject, but perhaps more of a summation for a particular interested party (in this case, a prince of Savoy). Apart from historical curiosity, the only useful bit I could glean was that Leibniz' monads are defined as being unable to be externally mutated and contain an internal reflection of the state around it, which is very loosely analogous to the type theoretic version. ### 11.2TODO read Physics of Space War A 2020 whitepaper on space warfare by the Center for Space Policy and Strategy. ### 11.3TODO read Leviathan The 17th century book by Hobbes, taking the position of defense of civilization and civilized man. ### 11.4TODO read The Use of Knowledge in Society (essay) A F.A. Hayek piece focused on centralized and distributed knowledge and its implications. ### 11.5[/] improve writing skill #### 11.5.1TODO The Deluxe Transitive Vampire A grammar book on proper English usage. Will give this a read to ensure I'm not making any mistakes, and just to remind myself of the various categories of grammatical structure. Some of these, I've forgotten due to never thinking about it. ### 11.6TODO read On Thermonuclear War Having read about a third of this already, this seems worth reading for more than just entertainment value, despite being published in 1960. The book is infamous for its emotionally-detached analysis of data-driven projections of the results of nuclear war. Will save this as the next hardcopy read. ### 11.7INAC[/] research naval warfare #### 11.7.1INAC Naval Warfare, 1815-1914 A medium-length book covering the transition period from wooden sailing ships to modern steel. Focuses on the technology advances of the time and their implications on naval strategy/tactics. The reason I'm interested in this, apart from my affinity to surface warfare, is developing a mental model for the strategy/technology relationship in naval warfare. This should help formulate a realistic space combat model should I ever get to working on my related game ideas. #### 11.7.2INAC The Influence of Sea Power Upon History, 1660-1783 I like naval history, though mainly starting at the Russo-Japanese war era. Despite being very old, this is still considered a classic and relevant to naval strategists to this day. #### 11.7.3INAC Multinational Maritime Tactical Instructions and Procedures An unclassified version of the maritime volume of Allied Tactical Publication 1. Used for international maritime exercises like RIMPAC. #### 11.7.4INAC Seapower: A Guide for the Twenty-First Century (2nd Ed.) If this is lacking, switch to reading Fleet Tactics and Coastal Combat (2nd Ed.), which I now have a copy of. ### 11.8INAC[/] learn basic lojban Not sure if I want to bother being able to speak this, but writing/reading it would be nice. I'll know whether to keep going once I get into it. There may still be an Anki (which is now defunct) flashcard set available too. Do a survey of resources before starting, as these are old. #### 11.8.1INAC read What Is Lojban? An introductory text to learning the language. Will at least read this and make a determination on whether to stick with it. #### 11.8.2INAC do online lojban lessons A natural language will need some help to internalize. #### 11.8.3INAC read The Complete Lojban Language A complete description of the language. Available free as EPUB. ### 11.9INAC read Introduction to Objectivist Epistemology (2nd Ed.) I'd like to give all of Objectivism one final comprehensive study, then maybe write a critique of it. But, I haven't been able to find a PDF of this yet. I'll give it one more look, then give up on this one. ### 11.10INAC read Being No One: The Self-Model Theory of Subjectivity This is supposedly empirically-based (though still a philosophical model), opposed to the mainly nonsense self theory talk in pseudo-intellectual academia. I'll give self-stuff one final chance with this book, and if it's garbage, forget about it forever. I may even do so if it's great, since these theories are pretty pointless anyway, and my biology based operating theory is actually useful. This is a massive book, far beyond my tepid interest in the subject, so I may do a selected reading. ### 11.11INAC[/] learn basic astrodynamics I'll need some knowledge here at least in order to make a realistic space sim. Don't need to know everything though, so can do a selected topics study. #### 11.11.1INAC read Fundamentals of Astrodynamics Have a hard copy. Seems like a good intro, from what I've read. #### 11.11.2INAC read Space Dynamics Have a hard copy. Same content as Fundamentals of Astrodynamics, and worth reading if I still feel weak on it. This is an older book and supposedly not as good, however. ### 11.12INAC learn basic Latin Work through or maybe just skim Wheelock's Latin. I've learned a little Latin since scheduling this task, and I'm not sure I like how messy the language is. May cancel this. Instead of natural languages, learn Lojban first. Plenty of Latin texts to practice on here: http://www.thelatinlibrary.com ### 11.13INAC learn basic orbital mechanics (intro) Get an outline understanding of this in order to properly play Rogue System. This is a sub-field of astrodynamics, which is on my list as something I want to properly learn thoroughly, so doing this has another side benefit. Tasks: Also watched a NASA educational film on the topic (which actually helped quite a bit). Note that orbital mechanics and astrodynamics are essentially the same thing. "Space dynamics", of which I have a book titled this, is a label used prior to the establishment of the field. ## 12 home improvement/maintenance ### 12.1DONE fill in depression in gravel pit • State "DONE" from "STRT" [2021-01-10 Sun 15:57] • State "STRT" from "TODO" [2021-01-10 Sun 17:50] Various people have been scooping shale here and someone left a depression that fills with water. Fill this in. Done. ### 12.2DONE replace duck water basin • State "DONE" from "STRT" [2021-01-13 Wed 17:13] • State "STRT" from "TODO" [2021-01-12 Tue 18:50] Current one broke due to frozen water. For the next one, only put a small amount of water in it when the overnight temperature is going to be well below freezing. 2021-01-12: Bought replacement basin. Looks like the cheapest locally is Tractor Supply, which has this for well under$10. Got a thick plastic one, but they have rubber ones too I could try if this doesn't work. I suspect the rubber to be less weather resilient.

2021-01-13: Installed.

### 12.3DONE fill truck tires with air compressor

• State "DONE" from "STRT" [2021-02-25 Thu 15:22]
• State "STRT" from "TODO" [2021-02-25 Thu 14:49]

See if I can take care of this at home. Should have all the parts for the air compressor. Will add to repeatable tasks list if this works out. These tires should be filled to 35 psi.

Done. Works pretty good. Probably could tape the threads on the adapter for the air chuck, but it works okay as is with a little leakage. Will do all tire inflation at home from now on.

### 12.4DONE fix office closet shelf

• State "DONE" from "STRT" [2021-03-22 Mon 15:27]
• State "STRT" from "TODO" [2021-03-22 Mon 14:59]

A retaining hook for this broke. Caulk that hole up and remount. Caulk up a couple missed holes in the living room while I have it out.

Fixed.

### 12.5[2/4] refactor kitchen/dining room furniture

#### 12.5.1CNCL replace kitchen dinette table

• State "CNCL" from "STRT" [2020-09-22 Tue 14:38]
• State "STRT" from "TODO" [2020-09-12 Sat 20:20]

Already started. Checked out county furniture store and they have a few options, but only cheap, mass-produced MDF items. These would still be an improvement to current wobbly table. We also went to the local furniture maker and asked his son about making one, and it looks like that's a better option. Call back next weekday with dimensions.

Desired dimensions: 24"x30" top and 30" height.

2020-09-21: Email with info sent. Will see if a response is forthcoming.

2020-09-22: So, I got a quote for $400 for this table. I might try just making it myself. Won't get to that any time soon though. #### 12.5.2DONE replace dining room table • State "DONE" from "STRT" [2021-02-10 Wed 14:05] • State "STRT" from "TODO" [2020-10-07 Wed 10:06] Two options for this: • The father is offering us his dining room table in exchange for our smaller one. This is just a standard mass produced furniture store table. Probably would still be better than ours though. • The local furniture maker already has one for sale with a bench for something like$1.5k. I think I prefer this option.

Take some measurements and make a decision.

2020-09-13: Measured and the new one will be perfect. The trade would work too, but I think the new table is worth the cost.

Bought a 24"x24"x1" teak table top for $30-something. Will have to research methods for attaching legs. ### 12.6[8/13] do 2021 garden #### 12.6.1DONE make 2021 garden plan • State "DONE" from "STRT" [2021-01-12 Tue 23:21] • State "STRT" from "TODO" [2021-01-12 Tue 21:45] Plan is mostly to do the same, except taking a break from spaghetti squash and most super hot peppers (will still plant a few for immediate use). Small garden will be mostly corn and pumpkins, in hopes that I have the spare time/energy to work on the fencing. Will also up onion production in hopes of freezing them (note these supposedly have a shorter freezer life of 6 months). Plan created. Will still think about it for a few days, just to be sure. Might also squeeze in a few sunflowers in random places. #### 12.6.2DONE start pecan trees • State "DONE" from "STRT" [2021-01-13 Wed 17:14] • State "STRT" from "TODO" [2020-10-11 Sun 14:22] Considering pecan trees, since they're less mess/work shelling. Maybe order these when they're close to in season: https://northernridgenursery.com/collections/nut-trees/products/hardy-pecan-tree Will think about where to plant them. Pecans are tall, so thinking maybe 2 past the chicken coop and 2 near the dirt bike track. 2020-10-11: 4 trees ordered. Also thinking I'll plant 2 in the loamy soil on the property border, near the pear tree. Then the other 2 will go on the southern side of the track. I think I ordered these for winter delivery, maybe in 2021-01. 2021-01-11: Trees arrived. Since they're just bare sticks and it's winter, will start them in pots first. The only other option according to the instructions is to keep them dormant, but I'd rather get them started right away. 2021-01-13: Started in pots in the electronics lab. Will move these outside in early April, then maybe plant mid-Summer. #### 12.6.3DONE order seeds • State "DONE" from "STRT" [2021-01-20 Wed 08:33] • State "STRT" from "TODO" [2021-01-14 Thu 11:45] Get a couple packs of onion seeds and one pack of spaghetti squash. 2021-01-14: Ordered 1 pack each of red creole onion, blush hybrid onion, and spaghetti squash. Was able to get 20% off using coupon code. 2021-01-20: Received. #### 12.6.4DONE start peppers • State "DONE" from "STRT" [2021-02-21 Sun 14:31] • State "STRT" from "TODO" [2021-02-07 Sun 14:06] Start these in early February. We have 6 large cell trays. Maybe do: • 0.5 habanero. • 2 cayenne. • 1 backups and Thai pepper (4-5 cells). • 1 jalapeño. • 1.5 green pepper. 2021-02-07: Started 2.5 cayenne and 0.5 habanero. 2021-02-21: Started 1.5 green and 1.5 jalapeño. Turns out I didn't save Thai seeds, so skipping that. #### 12.6.5DONE transfer chicken/duck plop into garden • State "DONE" from "STRT" [2021-02-24 Wed 17:49] • State "STRT" from "TODO" [2021-02-24 Wed 15:30] Wait for a very wet day for cleaning the ground area and a dry one for the chicken house. Should be able to get many wheelbarrow loads. Do a 50/50 split between gardens. Done. Also cleaned out chicken house. #### 12.6.6DONE burn debris • State "DONE" from "STRT" [2021-03-08 Mon 18:04] • State "STRT" from "TODO" [2021-03-08 Mon 15:21] Maybe do this in the big garden this year. Done. Tried out using the sawzall to cut corn stalks. Works okay, I guess, but next time pull these out of the ground sooner so there's no issue with getting mud off roots. #### 12.6.7DONE till gardens • State "DONE" from "STRT" [2021-03-20 Sat 13:52] • State "STRT" from "TODO" [2021-03-09 Tue 15:45] Skip the onion row in the big garden. 2021-03-10: Small garden tilled. 2021-03-15: Tilling complete. Still need to hoe clods. 2021-03-20: Done. Looks like shoveling takes about 8-10 hrs and hoeing takes about 5. #### 12.6.8DONE start tomatoes • State "DONE" from "STRT" [2021-03-22 Mon 15:43] • State "STRT" from "TODO" [2021-03-07 Sun 16:41] Start in early/mid March, probably 2nd weekend. Start in two batches, spaced 1 week apart. All in pots. Do two buckets of cherry tomatoes again. 2021-03-07: Started, except only started 5 pots of normal tomatoes. Will split these off later. 2021-03-20: Split off 4 smaller pots. Will do 2 more once I'm sure these took. They're a little wimpy still. 2021-03-22: Split off 2 more. That makes 15 total tomato pots of all varieties. #### 12.6.9TODO setup pea trellis Will plant these half at a time, spaced apart by about 1.5 months. #### 12.6.10TODO direct plant seeds Do this last week of April or first week of May, weather permitting. If things look warmer than normal, can plant the potatoes a week early. #### 12.6.11TODO fertilize plants Once everything starts growing again, do another round of powdered fertilizer for all perennial plants. #### 12.6.12TODO plant peppers and tomatoes #### 12.6.13TODO plant pecan trees Plant these once they have a nice set of leaves on them. Currently leaning towards just planting them in a row on the property line for ease in harvesting. Maybe put two in-ground first and leave the other 2 in pots for awhile. #### 12.6.14TODO expand garden/redo fencing Call local excavation company and see if they'll expand the small garden, re-level both gardens, and redo the fencing. Also get a load of gravel while at it. If I don't get to this by mid-February, postpone until 2021 and fix the small garden fence door. 2020-02-28: Nearest one only does new construction now, it seems. However, he did give me a contact for someone who might do that. Might give that a try, otherwise, will do it myself when I have the free time. 2021-03-10: Called the local fencing guy, Allied Fence & Decks. He does this kinda work and will send a quote. ### 12.7[3/9] do 2021 wood stove tasks #### 12.7.1DONE find more boiler treatment fluid • State "DONE" from "STRT" [2021-02-01 Mon 16:23] • State "STRT" from "TODO" [2021-01-25 Mon 12:36] Lowes sells Durst Boiler And Heating Cleaner, which might work as a backup if the local hardware store doesn't get this back in. Ordered ProTech 300 boiler treatment, which is available on Amazon. #### 12.7.2DONE shut down wood stove • State "DONE" from "STRT" [2021-03-01 Mon 09:06] • State "STRT" from "TODO" [2021-03-01 Mon 07:16] Maybe shut this down a little earlier than last year. Last year was late March, so maybe early-mid March. Will evaluate based on weather conditions at the time. Done on 2021-03-01. Was going to run it another week, but since the fire went out the previous night, might as well just shut it down instead of rekindling. There's a few more nights of it dipping below freezing, but looks like those should only be doing so for a few hours at a time. Will let this cool off for a couple days before doing follow-up work. #### 12.7.3DONE replace boiler water • State "DONE" from "STRT" [2021-03-24 Wed 17:03] • State "STRT" from "TODO" [2021-03-24 Wed 15:33] Probably time to at least check it. If it's clean, I'll leave it in there. Add more treatment fluid either way. Done. Was just some rusty water at the bottom but was otherwise okay. Topped it off and added a full small bottle of treatment. #### 12.7.4STRT clean wood stove • State "STRT" from "TODO" [2021-03-02 Tue 16:36] Get the rest of the creosote out of the flue. Once the internal area is clean, run the air compressor into the exhaust channel. #### 12.7.5TODO order loads of wood Order 2 loads of outdoor stove sized wood. Maybe intersperse cut wood between loads. Consider starting this around May. #### 12.7.6TODO cut more logs Try to get one or both of the chainsaws working well enough to get through a few cords. #### 12.7.7TODO fix rust spots on roof around flue Looks like the paint here degraded over the years due to heat and water did its thing to the steel roof. Tape off a square around the flue, sand the paint off, then replace it with stove paint. Should look fine despite the color difference, I think. #### 12.7.8TODO repaint wood stove Forgot to do this in summer 2019. Some of the paint is flaking off in a few areas. Will do a spot repair on it as needed. Already bought a can of paint. Do this after cleaning. If there's left-over paint, use it on the burn barrel. Decided to wait until I see post-cleaning performance of the stove. If it runs pretty good after the cleaning, I'll go ahead and do this, otherwise I'll plan to replace it. If replacing, then there's no point in doing all this hard work. #### 12.7.9TODO reattach trim to wood shed wall Looks like a piece of the trim came off. It's against the inside wall now. Reattach it, but make sure it doesn't come off again. Might want some small, short bolts for that. Probably have some good for this in the random parts collection. ### 12.8STRT clear pine trees • State "STRT" from "TODO" [2020-11-01 Sun 13:18] Wait until it gets cold and cut all of the small trees in the upper field down. Most are small and should go down with a single ax swing. Maybe trim and save some as stakes for the garden for next year. Toss some of the trees on the shooting range backstop to add some mass there. 2020-11-01: Started. Added a first load of trees to the pile in a test run. Looks like the bigger ones, which there are quite a few of, could benefit from some chainsaw help. 2020-11-08: Got a sizable area done, but noticed cats are still collecting ticks, so will hold off another month before finishing. 2021-01-14: Collected some sticks for garden marking stakes. ### 12.9[0/2] do 2021 driveway maintenance #### 12.9.1STRT add gravel to driveway • State "STRT" from "TODO" [2021-03-25 Thu 13:58] Get another load of gravel for the driveway in Spring 2021. Spread it around the parts I didn't get to last time, add more to the central area, and make a strip of it around the garage. Maybe give M- a call to see if he wants to do the delivery on this. Maybe use some of this to level out heat pump too. Do this before I need to mount the mow deck. 2021-03-25: Ordered a load of #57. Current price is$19.xx/ton.

2021-03-26: Delivery will be on Monday, 2021-03-29. Was thinking if I have leftover, will move it to a pile next to the garage.

2021-03-29: Received gravel load. Looks like #57 is correct. Did front driveway and filled in a few thin spots elsewhere. Need to finish wood shed, garage, and smooth everything with rake.

#### 12.9.2TODO treat driveway weeds

Keeping the driveway nice and clean is a real chore. In Spring 2021, try the product called Burnout, which is supposedly less toxic. Also won't translocate, needing to make direct contact with the plants killed. Get a dedicated 1-gallon pump sprayer for this.

2020-09-27: Bought a 2 ga. Husqvarna sprayer and 2 jugs of Burnout. Setup sprayer.

### 12.10TODO build monitor stand

Replace the computer case I'm using as a monitor stand with one I build myself from wood. Already bought the project board for it. Could either build this exactly the size of the monitor's stand or wide enough for the keyboard to go under. Also bought some 1" poplar square dowels I might use for this.

### 12.11TODO refinish deck

Do this in late Spring to late summer. Will need: shop vac, pressure washer, nail set, belt sander, sanding belts (30, 60, 80 grit), belt cleaning stick, palm sander with same grits plus 100 grit, large hand brush, respirator. Optional: roller and pan.

Procedure:

• Wait for a dry day with no likely rain to follow in subsequent days.
• Clean deck with pressure washer. Wait overnight for it to dry.
• Use the nail set to ensure all nails are set below flush.
• Use belt sander with 30 grit belt to get to bare wood. Use cleaning stick regularly. Remove all dust with shop vac.
• Repeat with 60 grit.
• Repeat with 80 grit.
• Use hand sander to sand the posts.
• Round any sharp edges.
• Use a screwdriver to clean out any gunk between boards.
• Apply a semi-transparent waterproofing exterior wood stain and sealer to deck using the brush or roller.

A followup task to this can be replacing the deck lattice.

If I don't get around to this by mid-Spring, consider hiring Virginia Deck Works for their (130 Graber Lane, Winchester, VA, 540-678-3340) "deck re-surfacing" service. Then they could redo the lattice work at the same time, and maybe address the deck ceiling, railing installation, and other issues out there.

2021-03-01: Called the above, but we're out of their service range. Maybe try Allied Fence & Decks out of Augusta (540-336-8695) or ask the neighbors who they use.

2021-03-10: That guy doesn't do decks currently, only fences. So, will get the rest of the tools to do this ourselves.

2021-03-12: Bought belt sander and belts of 40 and 80 grit. Only need the stain/sealer now.

2021-03-19: Went to hardware store to inspect options. Might use the Deck Correct product, which seems super resistant. Grabbed color guide. Looks like this product requires lows to be above 50F, so will do this in May at earliest. Instructions: https://www.cabotstain.com/products/product/Deck-Correct.html

2021-03-28: Measured deck area. Main strip is 72'x8', with an extra 9'x8'. Total area is 648 ft^2. Looks like we'll need at least 9 buckets then, and probably 10-11 if including the trailer. Looks like the Sequoia color will match the roof and otherwise blend in.

### 12.12TODO get windows serviced

Collect all window work to be done and get a windows contractor out to do everything. At least replace garage window, get broken tabs fixed, seal basement window, install missing screens, and fix all damaged window seals.

Do this in late spring or summer 2021. Window World in Winchester also sells Therma Tru front doors. Might be inclined to replace our doors and/or seal up the trim around it.

Master list of window work needed:

• Replace garage window.
• South basement window very occasionally leaks and can't be confidently opened/closed (not critical).
• Replace east master bedroom window seal.
• Fix/replace left dining area window broken tilt tab/clip.
• Replace southern attic window screen.
• Replace 2 missing screens on large kitchen windows.
• See if can replace commonly opened window screens with 4900 mesh size.

### 12.13TODO get short 1" pipe section

For future removal of the submersible pump from the well, get a ~6-12" section of 1" pipe with both ends threaded. This will only cost a few dollars and save any hassle in 15 years when it needs to be replaced again. This is due to the mount for the adapter being at a slight angle towards the house, making screwing in the T-handle difficult. Maybe also get a connector piece since it'll need a female end on the part where the T-handle goes into.

### 12.14TODO apply deck finish to trailer bed

Once I get started on refinishing the deck, use some of the same stuff to cover the bed of the trailer.

### 12.15TODO get water filter serviced

See if the noise this generates during backwashing can be fixed and get the clock reset. Generally inquire about its semi-ineffectiveness. Also write down how to reset the clock myself.

### 12.16[/] do 2021 minor repairs

#### 12.16.1TODO tidy up basement cable management

There's some cables dangling around in various spots. Use zip ties to keep these bunched together. Might want to buy some of the nail in kind too.

2020-04-08: Ordered some of the nail-in cable brackets.

2020-05-07: Brackets finally arrived.

#### 12.16.2TODO sand down spackling

All drywall holes were filled in shortly after move in. Might as well sand all of these down, so they'll be ready to paint over later.

#### 12.16.3TODO fix cuts in vinyl flooring

Get the Cal-Flor Multi-Surface repair kit and use on the kitchen floor. There's at least 3 cuts.

#### 12.16.4TODO patch up basement ceiling

Get some 4 mil black plastic sheeting from Walmart and use this to cover the removed sections. While at it, address the corner near the stairs. Utility closet also needs fixed up.

#### 12.16.5TODO replace caulking (round 3)

There's still some lower-priority areas that could use new caulk. Will need a fresh tube of it to complete this. Might save this as a winter job.

• [ ] Redo the entire area around the SE bathtub.
• [ ] Redo inside of the SW shower door.
• [ ] Redo around basement bathtub.

#### 12.16.6TODO fix culvert cover

This was broken by the gravel dump truck running over it. Checked this out and while the cover is indeed broken, so is the vertical culvert (possibly a catch basin). I'll replace both of these at once, but will get around to that later, since it'll require digging it all up. Measure first. I think Jolins has these parts.

#### 12.16.7TODO get water filter serviced

Makes some noise when running the filter cycle now. Get that looked at and also have the guy reset the timer to run at night.

### 12.17[1/3] do 2021 cleaning

#### 12.17.1DONE clean vinyl siding

• State "DONE" from "STRT" [2021-02-25 Thu 15:53]
• State "STRT" from "TODO" [2021-02-25 Thu 14:53]

Clean the siding on the north side of the house. Maybe use the pressure washer.

Just used the bucket/brush method this time, but should definitely pressure wash it next year.

#### 12.17.2TODO clean foundation

Get the pressure washer out and clean the house foundation. Might as well do this while cleaning the deck.

#### 12.17.3TODO pressure wash screens

I hosed these previously, but the pressure washing could get them even cleaner.

### 12.18TODO install electric heat element

Do this in spring 2021. This will make heating in the house significantly less insecure, as a wood stove failure wouldn't leave us unheated. Could even use this in the evening and switch to heat pump in the day during part of the year, then still use the wood stove but only during the coldest 2-3 months. I'll probably call the HVAC guy and discuss the subject. I think what he suggested is to have it integrated as a backup heat source for when the heat pump would otherwise run inefficiently. I need to get the heat pump serviced anyway (mainly to ensure the refrigerant is topped off).

Electric resistance heating is by far the most expensive and eventually I'll want to deprecate the external wood stove since it won't last forever. Still debating on whether I want to replace it with a new one for its service life or switch to a more conventional heating system. Fuel oil is the cheapest, but makes us dependent upon another resource (though arguably one less inconvenient than wood). Propane is more common here, but since we don't use it for the stove, it's of less utility. Oil and propane both have suppliers in the area.

### 12.19[2/7] do 2021 lawnmower maintenance

#### 12.19.1DONE sharpen spare mow deck blades

• State "DONE" from "STRT" [2020-11-08 Sun 14:04]
• State "STRT" from "TODO" [2020-11-08 Sun 13:14]

Seems like I only need to swap these every other year, if I'm feeling lazy. So, no emergency on this task.

Got around to doing this early.

#### 12.19.2TODO add grease to mow deck PTO zerk

Looks like the service tech missed this one last time.

#### 12.19.3TODO remount mow deck

Do this around early April, unless I'm using the tractor for something else at the time. Remove PTO tape first.

Check balance.

#### 12.19.6INAC remove mow deck and clean

Eyeball blades to see if a swap is needed. Check tension on blade nuts.

### 12.20INAC get car inspection

Do this in 2021-10.

### 12.21INAC refinish burn barrel

If I have spare wood stove paint, use it on this. Sand off all rust and old paint first.

### 12.22INAC replace missing garage lights

Not necessary, but might as well populate the missing 2 lights. These are 2-pin ones and measure 48"x1.25", I think.

### 12.23INAC install key holder

Centralize key storage by mounting the key holder we already have on the wall somewhere. This should either go in the foyer or next to the front door.

### 12.24INAC refinish boat

Replace the wood deck. For painting, decide whether to completely redo it, just do the bottom hull and inside, or nothing at all.

• [ ] Remove wood deck:
• [ ] Replace wood deck with marine grade plywood and paint it: Might just cut off some of the plywood I already have, since getting marine-grade appears to be a pain.
• [ ] Consider replacing chair:
• [ ] Order some Duralux aluminum boat paint that acts as both primer and paint. Available from Home Depot, but need to have delivered.
• [ ] Repaint aluminum hull. Sand until metal is shiny. Scruff it with a medium pad (maybe just use some steel wool). Apply a layer of epoxy primer then a single stage or base/clear coat of poly enamel.

### 12.25INAC install kitchen backsplash

This will protect the wall from splashes and is a cheap way to increase perceived value (I think). Easy to install. Leaning towards this one: https://www.art3d.com/designs/a17024-self-adhesive-backsplash-tiles-for-kitchen-6-pieces-peel-n-stick-tile-5.8-sq.ft/

Also get some kind of trim strip for this, so it doesn't just end.

Decided to do this after repainting the kitchen, so this is a ways out.

### 12.26INAC build table saw bench

Thinking a max 6' table with flush mount shelf for the table saw, with the table on casters. Maybe have the short sides enclosed with plywood for extra sturdiness. Neighbor has a steel frame he doesn't want that I might use for this. Would just have to add wood shelves for that.

## 13 stuff

### 13.1DONE fix pocket knife

• State "DONE" from "STRT" [2021-01-03 Sun 22:11]
• State "STRT" from "TODO" [2021-01-03 Sun 21:55]

One of the Barlow's scales fell off. I can get it back on, but it's a little loose. I'm thinking a zap of glue gun can fill in the scale cavity and make it perfect.

Decided also to touch up the top scale clip with some solder, but will have to wait for the soldering station replacement for that.

Fixed. Seems the plan worked. However, I'll leave this as a workbench knife and use my other one for outdoor stuff. The Barlow's days of heavy farm use are probably over, and using it for that now would just turn it into trash.

### 13.2[8/8] refactor fishing setup

#### 13.2.1DONE ponder fishing equipment

• State "DONE" from "STRT" [2020-09-21 Mon 10:51]
• State "STRT" from "TODO" [2020-09-21 Mon 09:33]

After buying a cheap used rod at the local auction, finally got around to trying out fishing. It seems kinda fun, sorta. It's at least a good extremely infrequent activity. While not one I'd get in the car and drive for, the large pond is right here and we already own a boat and a lot of the equipment. A small investment would round out the ability to make use of it. This is super low priority, so will just do this stuff as I get around to it.

Some thoughts:

• A 2nd rod would be nice so we can both fish at the same time. Since I already have the spin combo, make a baitcaster one, which I think I'll like more and will be more versatile for all of the possible fishing techniques that make sense for the pond.
• Need a few small items, since the tackle box is short on them. Should just need swivels, line, and bobbers.
• A net would be nice for catching frogs and maybe other stuff. Not a high priority since they can be caught with a bucket or by hand.
• Get stuff to de-slime the pond next year. This will help keep the equipment clean and prevent constant algae on the lures.

Going for this plan. There's probably further optimizations I could make, like replacing the current spin rod, but they exceed my current interest level. I also want to abuse the pond fish as minimally as possible, so won't be fishing more than a 4-5 times per year.

#### 13.2.2DONE review fishing basics

• State "DONE" from "STRT" [2020-09-24 Thu 19:36]
• State "STRT" from [2020-09-24 Thu 08:12]

Read this to refresh my memory and make sure I didn't miss any of the basics: https://fishing.github.io/

Mostly review, but did learn a few things.

#### 13.2.3DONE get a few tackle items

• State "DONE" from "STRT" [2020-09-25 Fri 14:27]
• State "STRT" from "TODO" [2020-09-22 Tue 16:53]

Just need a few items that the tackle box is short of:

• Spool of 12 lb fluorocarbon line. Maybe get some 10lb for leaders.
• 1 pack of swivels.
• 2-3 balsa bobbers.
• 1 pack of offset hooks for plastic worm use.
• Maybe 1 pack of smaller worms.

2020-09-22: Was at the hardware store and grabbed the bobbers, hooks (1/0 I think), and snap swivels.

2020-09-23: Ordered the rest of this stuff, plus threw some extra items on there to get free shipping as it would've costed more to not do so and get nothing extra. Bought:

• 12lb line.
• 10lb line.
• 1 pack of stick bait to use with the hooks already purchased.
• 1 pack of #10 swivels.
• A pack of 3.5" swimbaits with jig heads pre-installed.
• Fish scaler.

2020-09-25: A- found a box of catfish terminal tackle I didn't know we had. Added to the collection.

2020-09-25: All stuff acquired. The stickbait was a bit longer than I envisioned, the swivels were a bit smaller, and the swimbaits only had 1 jig head. Some of this is my fault, but I'll only buy any future tackle in person to eliminate any further issues. Probably won't need any though.

#### 13.2.4DONE setup rod holders in workshop

• State "DONE" from "STRT" [2020-09-29 Tue 00:46]
• State "STRT" from "TODO" [2020-09-21 Mon 15:33]

Get some wall-mounted ones to hang 2 rods, and possibly a long-handled net at some point. Just mount the ones for the rods for now, in case we never get around to getting the net.

2020-09-24: Ordered a 3-pack of metal ones for $8.10. I do want to think about it a bit before mounting these, as maybe I should make one out of wood instead. Could also attach these metal mounts to boards and hang them. 2020-09-25: Items arrived. 2020-09-26: Cut 2 18"x3.5"x0.5" oak boards. Sanded and put an application of stain on them. Will need to buy 12 screws to attach the fixtures. Will also see if I can route and attach keyhole hangers to the backs of these, just for practice for future projects. 2020-09-27: Bought screws, 1/2" chisel, and keyhole hangers. 2020-09-29: Complete. Looks great. Going for the wood backing was a good idea. Decided not to use the keyhole hangers, since I only had 2 and realized that the bottom wouldn't have been secure. Instead used 4 2" wood screws, after painting the heads black. #### 13.2.5DONE build budget baitcaster combo • State "DONE" from "STRT" [2020-10-03 Sat 14:41] • State "STRT" from "TODO" [2020-09-22 Tue 09:21] The only part of this refactor where I need to spend any significant cash. I figure I might as well build a mid-range setup here, keeping the whole thing under$250 at absolute most. Maybe switch the handedness of the spin combo once this is setup.

Components:

• Rod: St. Croix Triumph Casting Rod, $100. • Reel: 13 Fishing Concept A,$120.

2020-09-21: Ordered rod from Midway. Got the 6'6", Medium, Fast. Was hoping this was a US-made rod, but found out after ordering that the lower end St. Croix are made in Mexico. Only other option would've been the lowest end G.Loomis, but that's twice this price. Will keep this in mind in case I ever replace the spin combo.

2020-09-22: Ordered reel from Amazon. Went with the 6.6:1 ratio.

2020-09-25: Reel arrived. Looks pretty good. The rod is being shipped USPS, so will have to go pick it up once it arrives.

2020-10-03: Rod arrived, finally. Mounted reel and it looks pretty good. Will test.

#### 13.2.6DONE get algae control additive for pond

• State "DONE" from "STRT" [2020-11-24 Tue 09:39]
• State "STRT" from "TODO" [2020-09-24 Thu 19:42]

Figure out what I'm supposed to put in a pond to keep the algae down and only add the absolute minimum. Research this topic a bit and get the stuff ready. Could also email neighbor and see what he puts in his.

2020-09-21: Emailed neighbor. Hopefully will save a bunch of research.

2020-09-22: Neighbor says he uses Aquashade and also adds some of the beneficial bacteria from organicpond.com. I'll start with just the Aquashade first, which seems available at the nearby Southern States.

2020-09-24: Put some Aquashade in the pond. Will check color tomorrow and probably add more. Looks like this stuff is cheaper at Tractor Supply. Will just order it for delivery there next time and maybe get a jug of cutrine as well (just for the small pond). I'll need a spray applicator for the cutrine.

2020-09-25: Put a little more in the large pond. This was about 4.5 of the blue cup that I've designated for Aquashade use.

This seems to have worked out for now, though it's hard to tell if the water cleared up entirely because of winter. Will order some more Aquashade next year. I'll see how just using that goes, and consider the cutrine based on those results.

#### 13.2.7CNCL consider replacing tackle box

• State "CNCL" from "TODO" [2020-11-24 Tue 09:41]

Looks like wooden tackle boxes are available on Etsy. Maybe get one of these, then go through the tackle and separate out just the stuff I'll actually use. Then put the old tackle box and all remaining stuff in the auction pile. Currently, none of these are completely perfect for what I want though, so maybe consider making one. A really good design would be a wooden box that the plastic boxes can slide into.

Skipping for now. Will revisit this idea once I've got a 3D printer and/or laser engraver. This is on the ideas list for printing projects.

#### 13.2.8DONE consider replacing spin rod

• State "DONE" from "STRT" [2021-01-25 Mon 18:10]
• State "STRT" from "TODO" [2020-10-22 Thu 21:23]

Originally just going to keep the old spin rod I got at auction, but the line guides keep breaking on it. Maybe repair it, tape up the line, add to the to-auction pile, then get a new one. Wait until I have the new casting rod setup before deciding what to do.

Considering:

• Rod: St. Croix Premier Spinning Rod, 6'6", Med (or M/L), $150. • Reel: Favorite Yampa River Spinning Reel, 1000,$130.

2020-09-29: Fixed old rod.

2020-10-22: Ordered Favorite Yampa River Spinning Reel 1500. Might hold off on getting the rod until after Christmas, unless it goes on sale.

2020-10-26: Received reel. Will get rod later as planned.

2021-01-19: Rod back in stock, so ordered.

2021-01-25: Received. This completes the fishing gear refactor, unless I get around to building a tackle box.

### 13.3DONE de-brand new boots

• State "DONE" from "STRT" [2021-02-12 Fri 13:46]
• State "STRT" from "TODO" [2021-02-12 Fri 13:35]

Do this outside.

Done.

### 13.4DONE get cordless sawzall and skill saw

• State "DONE" from "STRT" [2021-02-15 Mon 13:15]
• State "STRT" from "TODO" [2021-02-10 Wed 08:50]

Sawzall: Probably get a Dewalt one, so it can share batteries with the other cordless power tools. Get a pack of blades too.

Skill saw: Would be useful for cross-cutting boards on the spot and doing 45° cuts. Should be able to get away with a smaller blade size, like 6.5". Grab an additional high-tooth blade for cutting vinyl and maybe acrylic.

2021-02-10: Finally went on sale for -$30 each. Ordered both. Sawzall is model DCS380B and skill saw is model DCS391B. 2021-02-15: Received stuff. Notes: • Skill saw uses a 5mm Allen. This is included on the side of the tool. When replacing the blade, depress the lock behind and above it, then tighten it down (but not too much). • For the sawzall, be sure to use the right blade for the material being cut. Use low TPI blades for wood, and higher TPI for thicker metal. Angled blades are for plunge cuts, the more squared off ones are for edge cutting. To install/remove blade, pull up on the flat yellow lever on the right front. To adjust the shoe depth, use the button on the left front, pulling the shoe in or out. Be sure to select a blade a good bit longer than the material being cut. For pocket cutting into an (ideally) thin material, rock the blade into the material by the base of the shoe. ### 13.5DONE get new outdoor work jacket • State "DONE" from "STRT" [2021-03-20 Sat 14:32] • State "STRT" from "TODO" [2021-03-03 Wed 12:18] Old jacket I bought at a PX in Afghanistan is finally unusable due to a broken zipper. Get a medium-to-light warmth jacket. Some light water resistance would be nice. Thinking about trying a waxed trucker jacket. Thinking about this one (in black or moss green): https://huckberry.com/store/flint-and-tinder/category/p/55985-flannel-lined-waxed-trucker-jacket 2020-09-26: While ordering some stuff from Midway, grabbed an Italian parka with liner since they were on sale for$28. Might not fit great, like most military surplus clothing, but cheap enough to be worth a try.

2020-10-07: Tried the parka out, but it fits weird as expected. This isn't a total loss though, since it's not too bad and is a good replacement for my M65 field jacket, which is a bit worn. The parka has longer sleeves, so fits better than the M65. I'll still proceed with getting a work jacket replacement.

2021-03-03: Ordered the Coal colored, size M.

2021-03-20: Got this within a few days but forgot to close it. Looks pretty good.

### 13.6[2/13] do 2021 firearms collection refactor

#### 13.6.1CNCL sight in AR scope

• State "CNCL" from "STRT" [2021-01-09 Sat 23:36]
• State "STRT" from "TODO" [2020-09-25 Fri 22:25]

Will wait for factory ammo to arrive. If it doesn't anytime soon, I'll just sight it in with handloads.

2020-09-25: Mostly sighted in at 100 yds, but ran out of handloads for the day. Might be a couple inches high still.

2021-01-09: Canceling since I'm switching to the FF3 here. However, the scope should maintain zero, or close to it, since I'll leave it on the mount.

#### 13.6.2DONE get FF3 mount for AR

• State "DONE" from "STRT" [2021-03-29 Mon 21:23]
• State "STRT" from "TODO" [2020-10-28 Wed 13:09]

Get the AR-F3 mount for the FF3. I'll still use the AR for load dev occasionally, but this will be the main optic for it most of the time, at least until the Model 10 arrives. By then, I'll be able to decide what stays on here permanently. I might swap the scope back on occasionally for supers.

2020-10-28: Ordered mount.

2021-03-29: Finally got around to swapping this on. Looks great. Need to sight it in though. This is definitely a good config for an AR pistol, which should be a CQB weapon anyway. Possibly the weapon light might make sense here now.

#### 13.6.3STRT check out free turret press

• State "STRT" from "TODO" [2020-11-10 Tue 18:03]

Neighbor gave me a free Lee turret that he didn't want. Looks a little neglected at first glance. Will check this out and see if I want to use this as a decapping press or maybe set it up for just 9mm.

2020-11-10: Arm was stiff, but got it cleaned up and running smooth. Looks like it's missing the primer feeder arm.

2020-11-12: Ultrasonic cleaned some of the parts.

#### 13.6.4BLCK consider custom falling block

• State "BLCK" from "STRT" [2020-08-31 Mon 22:40]
• State "STRT" from [2020-08-31 Mon 12:18]

I'm pretty sure I'm settled on what my ultimate rifle would be. Dakota comes the closest to this with their Model 10. With a lead time of 15 months, I should probably order it sooner rather than later, despite not being on the original refactor plan. I'll work on making room for it in the meantime.

2020-08-31: Ordered. Chambered in 300 BLK. Went with a 16.5" barrel, XXX wood (selected Claro, a darker wood with finer grain), 30mm Tally rings, metal buttplate, and threaded muzzle. All other options are completely base level. Express sights would've been nice, but decided to go scope-only due to having the AR for this purpose. Total is a bit under $6000. Paid a$200 deposit. Will think about scope options when closer to arrival. Will probably get a call when order is in. If so, inquire about the barrel thickness. There's some question about whether a light taper will be appropriate with the needed threading. I may want a heavier barrel anyway just for heat reasons.

#### 13.6.5BLCK consign .22 rolling block

• State "BLCK" from "STRT" [2020-10-17 Sat 15:18]
• State "STRT" from "TODO" [2020-10-17 Sat 10:30]

Consign this to replace it with a more useful and accurate .22 rifle, probably a bolt action. Considering Cooper, Remington, or CZ for the replacement, but might also consider a used one.

2020-10-17: Consigned. Check back on this in a couple months. Consignment sheet is in living room desk (top left drawer).

2021-03-06: Checked on this and it's still sitting there. Will check back in another 5-6 months or so. Will hold off on getting new .22 until this is resolved, since I might end up taking it back if nothing happens.

#### 13.6.6BLCK consign some milsurps (round 3)

• State "BLCK" from "STRT" [2020-11-24 Tue 12:33]
• State "STRT" from "TODO" [2020-10-21 Wed 10:16]

Consign the ce/44. Donate spare 8mm ammo to shop.

2020-09-29: Took pictures.

2020-10-21: Consignment form submitted, waiting for call.

2020-11-02: Evaluation email finally came in with usual undervalued estimate. Still waiting for call though.

2020-11-13: Looks like they were waiting for me to be okay with that estimate, so emailed back.

2020-11-16: Got forms.

2020-11-24: Tried to get local new FFL to ship this for me, but ended up being a waste of time. Took into Post Office myself, which is a viable option for normal rifles (not handguns though). Rifle shipped. Note that I do need an FFL copy if doing this myself via USPS. Task blocked until I get the check back.

2020-11-25: Got confirmation of receipt.

2020-12-15: Got letter saying it'll be in a 2021-02 auction.

### 13.7TODO filter work shirts

Go through all my work shirts and toss all the worn ones. Depending on how many are left after this, I may stock up on a few plain white or gray shirts.

### 13.8TODO replenish consumable supplies

Had most of what was needed once the panic buying hit. However, once normalcy returns, we'll be low on various items. Rebuild the stockpile and make it a good bit larger than before. We've got plenty of basement shelf space, so might as well use it. As usual, only buy stuff that will definitely be used eventually. Items to hoard:

• Cleaning: Paper towels, laundry detergent, dish soap, Q-tips.
• Cooking: Flour, salt, yeast, spices, oil, spray oil, rice, soy sauce, teriyaki sauce, sugar (white/brown), parchment paper, aluminum foil, plastic wrap.
• Food: Diet soda, ice tea bags, canned soup, beans, Soylent, noodles, mustard, spaghetti/sauce.
• Hygiene supplies: Mouthwash, razors, shaving soap, toothpaste, tooth brushes, eye drops, hair dye, shampoo, soap.
• Animals: Cat food (dry/canned), litter, chicken feed.
• Hardware: Paint brushes, boards, screws, nails, face masks.
• Toilet paper.
• Garbage bags.
• Alcohol and hydrogen peroxide.
• Latex gloves.
• Batteries: Just one extra pack of each kind.

Thinking I should probably get 9mm dies, pistol primers, and projectiles too, but it'll be awhile before those come back in stock. I'll also queue up items needed for projects a little earlier, so I can stay productive. Will up the priority of some of my lifetime-level supplies for things like clothing.

2021-03-21: Got a free set of Lee 9mm dies from neighbor.

### 13.9TODO get chest freezer

Get a 5 cu.ft. chest freezer. Measure the basement door first so I have the dimensions handy when buying and won't get one where I have to remove the screen doors to get it in.

2020-10-26: Measured door width at 33.5". Should have room for a 7 cu.ft. one.

### 13.10TODO consider security camera setup

Currently thinking about the Wyze outdoor cameras, with one in front and one in back. These supposedly can save to SD card. Need to do more research before buying anything though and think about where exactly I would mount them. Mostly doing this to track wild animal patterns around the house, so not a high priority.

## 14 personal improvement/maintenance

### 14.1DONE do 2020 taxes

• State "DONE" from "STRT" [2021-03-24 Wed 14:04]
• State "STRT" from "TODO" [2021-03-24 Wed 12:13]

Looks like the government still exists, so maybe do this mid-Feb.

Done. Federal accepted within a few hours and state a few hours later.

### 14.2STRT get to optimal weight

• State "STRT" from "STRT" [2021-02-28 Sun 15:49]

Switching from Soylent to garden fruits/vegetables. Eating lots of Soylent only made sense when I was working in an on-site office and/or didn't grow my own food. The current situation is that I work from home and get most produce from the garden, but still buy vegan analogues and grain products.

I already get enough of exercise, so this plan just is limiting caloric intake. Starting new plan as of 2021-02-28.

The plan:

• For lunch, only eat stuff from the garden or skip it altogether. Some of these meals are indeed boring, so use hot sauce or something to keep it interesting.
• Eat a normal dinner, but try to limit sugar/carb intake.
• If I eat out for lunch, skip dinner.
• No snacking.
• Continue tracking weight on Gnuplot file.

### 14.3STRT improve posture

• State "STRT" from "TODO" [2021-02-09 Tue 08:27]

Time to go no-slouch. Apart from the obvious, I suspect improving posture would have a lot of additional side benefits. This plan is to simply force myself to only sit ergonomically correct whenever using the computer and to consciously always walk fully upright. Will also add squats to weight lifting regimen. Will try this for 3-4 months and reevaluate. Might also grab an office stool to force compliance. Later, I may consider a Moonlander split keyboard to keep the arms from being crunched together, though I'm not sure that's as much of a problem.

### 14.4TODO quit using e-cigarettes

No longer needed since I work from home. Might as well quit this and save the cash and inconvenience. I have one battery and a couple bottles left, so start thinking about doing this before these are used up. Since quitting a stimulant usually results in weight gain, switch to 1 meal/day for at least a couple months before the cutoff day.

### 14.5INAC switch to mono-outfit wardrobe

There's other names for this concept and variations of it, but for me it means wearing the same outfit every day (with variations only for weather). Ensure all clothing has no visible brand labels or other printing.

This concept appeals to me for these reasons:

• Brain clock cycles are freed up from having to decide what to wear every day.
• Every article of clothing owned will actually be worn regularly and it's easy to tell when short on something.
• The overall amount of clothes owned is significantly reduced. There are no situation-specific outfits.
• With a varied wardrobe, one has to invest an amount of time into finding every individual article. That cost is only paid once in a mono-outfit wardrobe.
• Human clothing is a solved problem. Absent the invention of some kind of actually useful and affordable smart clothing, there's no point in trying to dedicate time/energy towards a problem that doesn't exist. Purchasing all kinds of clothing variations is just cosplay at best.

What about costume-required events/places? My opinion here is that if something requires a specific costume that plain shirt+pants don't qualify for, then it's probably not worth attending anyway.

Grabbed a few things as part of this plan, but I'll focus on it at some point.

• [X] Gloves: Bought a huge pack of rubber-dipped cloth gloves for outside. Will keep my leather gloves for driving.
• [X] 20 boxers: Went with Ex-Officio.
• [X] 8-10 black polo shirts: I have about 5 unopened and 3-4 older ones.
• [X] 4-5 gray long-sleeve t-shirts: Have 5.
• [X] Rain jacket: Got a 5.11 one.
• [X] Waterproof boots: Got a pair of LL Bean ones and filed the unsightly logo away in back. Maybe grab another pair and/or some shorter ones.
• [ ] 10 pairs more normal socks, 5 winter. I like the Allen Edmonds variety. These are very expensive though, so wait for a sale and stock up.
• [ ] 16 plain black t-shirts: Have about 6 so far.
• [ ] 10 jeans: I like the 5'11" ones, but I'm waiting to see if I can lose another pants size first.
• [ ] Organize collection: Put clothes to wear out first in separate drawers.
• [ ] (Optional) 2-3 dress shirts:

2018-10-17: Refactored this slightly. Changes account for new life situation. Most importantly, I do have use for outside clothing and cold weather gear.

### 14.6INAC Lasik eye surgery

Confirmed with local optometrist that I'm a good candidate for this. Cost for both eyeballs will be about \$4500. He recommends a place in McLean, VA for this, so I'll probably want to grab a hotel room in the area for the night after instead of driving home. I was going to do this sooner and but it got put off by the job switch then 2020 pandemic, so will try setting things in motion once I go in for my next exam.

2020-10-28: Another option a coworker recommends: https://www.tlcvision.com/lasik-surgeons/mark-e-whitten/