Atom has a poor user experience for keybindings, unlike VS Code

Atom doesn’t let you disable just one keymap from a package. Not from the settings at least. It has you either keep all or reject all without further keymap manipulation. lisp-paredit strict mode near-gave me an aneurysm when it hijacked my main commands like C-w for closing the window–and Atom didn’t let me easily remove it without bombing the rest of the keybindings. Contrast this to VS Code which says fuck that and lets you decide what each function’s keybinding should be.

Proto REPL with Atom on Windows: Press Ctrl + Alt + comma... let go, and then press y to connect to the nREPL

Proto REPL offers weird keymaps for connecting to the “network REPL” (nREPL): C-M-,y I didn’t know the comma was part of it, so I pressed C-M-y (Ctrl + Alt + y at the same time), no result. I pressed C-M, let go, and then pressed y. It just typed “y” with no result. I tried C-M-,-y (all at the same time). I felt something was broken until I accidentally let go after pressing the comma and pressed y.

Clojure treats `nil` differently than ClojureScript does (can't do arithmetic with a Clj null; can with a Cljs' null)

Clojure treats nils differently from ClojureScript. For example, you can inc a nil in ClojureScript but not Clojure. I watched Jacek’s course (video #7) and saw him use update on an empty map with an unused key and inc: basically (update {} :id inc). It returned the map with the id and 1 (from {} to something like {:id 1}). Confused about this, I learned about updates nil-adding feature and wondered how inc handled `nil.

Learning/writing rate depends on question rate

I have a rule to take 300 notes per paragraph but often stared at a blank screen. Today, while going number two, I got an insight to hypothesize “if I ask sixty supporting questions to the main question, I will take 300 notes more efficiently and in a more satisfying way.” I tried this for this paragraph, and it proved true. To support main questions and topics going forward, I will ask and answer many supporting questions in the notes.

I desire a Linux system for web development

(Still pondering this. Likely wrong here.) I’ll have an easier time developing with Linux. On Windows, I’m switching between Bash for Windows and Powershell constantly. Tools like clj, Docker (try execcing into a shell), and Babashka (the repl eventually bugs out) simply don’t work fully in Bash for Windows. Bash provides a cleaner experience, offering concise linux commands like which to find an installation path vs. Powershell’s (Get-Command cmd).Path, but it gets second-class support on Windows.

A Reagent component is a function that returns a "V(oV)oKaHoC"

…A vector (of vectors) of keywords, mashmaps, or components. Keywords represent html tags. Hashmaps represent attributes for the html tags. Vars that refer to functions that return the V(oV)oKaHs are components that do these things one level deeper. Simple: (defn card [] [:card "Hi"]) Less simple: (defn card [] [:card [:img {:src "img/card-icon.svg" :alt "Tiny logo for the card"}] [:h2 "Card title"] [:p "Card text"]]) More less simple: (defn card [] [:card [:img {:src "img/card-icon.

"Getting" macros

Macros let you leverage the understanding of the reader and evaluator. I perceive Clojure’s process to be: “Text -> List of symbols -> Macro list of symbols -> Evaluation”. Macros take the symbols of arguments before they’re evaluated so that you can change the content and order of the list before they’re evaluated. Define macros with defmacro and pass in the forms. The arguments given are parts of the list before evaluated.

I don't understand the classpath?

I suspect my understanding of the “classpath” and Figwheel/ClojureScript’s use of it is inadequate, else the wow.core namespace and all its interns (namespace-bound defined variables) would be there. I used clj -m figwheel.main expecting it to work with my namespace, but it didn’t. After calling clj -m figwheel.main from Powershell and then in-ns from the REPL into my wow.core namespace then calling each function in the REPL, Figwheel/ClojureScript responded saying that each function “undeclared”.

I can use Figwheel (maybe), `doo`, JS interop, or raw JS to test against the dom

It’s easier to test the front-end with JavaScript than with ClojureScript at the moment. JS has many tools (Puppeteer, Selenium, PhantomJS) to let me spawn a browser, a page from a browser, interact with the page, and then test for what’s on the page based on my interaction. I have four leads right now for testing functions on the dom: Figwheel, doo, the use of JS libraries via JS interop, and raw JS testing against the ClJS-compiled JS.

My version control workflow

I can make development easy by following the version control workflow for each feature. First glance at the release notes (i.e. to see what the current focus is), then start the following commands with git : Start checkout main status pull origin main checkout [-b] my-branch-name-w-semver status During (Tests) (Code) Feature complete status add -A commit -S -m '[message]' checkout main pull merge [branch-name] push branch -d [branch-name]