this is not even funny anymore

3Blue1Brown is the only person to have made serif fonts look good

Art like this don't focus on visuals or figures; instead, they convey emotions. Forms and figures morphed. Strokes and lines don't depict, they express. In that way, this type of art feels closer to music than 'normal' art.

It's the only type of art I'll ever truly love.


you don't know true pain until you try to find your old high school algebra notes on dot product 'cause ur trying to learn tensorflow

funny how all the AI/ML stuff is just humanity's effort at re-inventing the brain.

*faint javascript noises in the distance*: y dont u use a library 4 dat just go npm install hoho


what the fuck are syncopation, counter-melodies, overtones + harmonic series, negative harmony, just intonation vs equal temperament...

my relative pitch is horrific, i can't even remember the neapolitan chord and modes what the fuck are all those


The hard part of learning after studying a concept is committing the understanding to the memory palace. It takes a massive amount of mental effort to create the metaphors for the concepts, memorize them, jot them down, not to mention the maintenance of keeping these palaces from being forgotten with spaced repetition.

Given how expensive this work of trying to keep stuff in your long term memory is, try to keep its usage to very fundamental concepts you absolutely need to memorize. In music, that may be scales or the Circle of Fifth; perspective types, anatomy theory, or composition rules in art; in programming are the data structures and algorithms, or the language quirks (Go's goroutines or Rust's ownership and borrow checker); maybe even something trivial but frequently referred to like your VPS' IP address if you're like me and can't ssh into your server without pressing 100 times in the terminal.

In the end, the result is that you have extremely firm knowledge of whatever you've put into your memory palace. You're not worried about lacking fundamentals if they're all committed to your memory storage. Life's good when you can pop the name of any scales and its dominant and subdominant chords off the top of your head or you don't have to reference the docs every 5 seconds when programming in Rust.

You shouldn't abuse memory palaces to try to remember every single thing. For most trivial stuff, we'd be better off just putting them in a notebook somewhere and refer to them on the rare occasion they're needed, rather than putting in the work and maintenance to store a memory palace for them with the excuse of “maybe I'll need it someday”.


use this if you want to get rid of the hovers constantly jumping in and out, breadcrumbs, inline error messages, etc. and just retain autocompletion and syntax checking.

or the alternative: RTFM and do it yourself:


;; Disables most hovers, breadcrumps, mode-line info
(setq lsp-ui-doc-enable nil)
(setq lsp-lens-enable nil)
(setq lsp-headerline-breadcrumb-enable nil)
(setq lsp-ui-sideline--code-actions nil)
(setq lsp-ui-sideline-enable nil)
(setq lsp-modeline-code-actions-enable nil)
(setq lsp-eldoc-enable-hover nil)
(setq lsp-signature-auto-activate nil)
(setq lsp-signature-render-documentation nil)
(setq lsp-completion-show-detail nil)
;; Disable file-watch and logging for performance
(setq lsp-enable-file-watchers nil)
(setq lsp-log-io nil)


exhibit A



exhibit B



#programming #emacs


what I tried to learn while reading Effective C#. Kinda pointless now since I don't use C# that often anymore. I got to the LINQ chapter and gave up lmao.

  • Multicast Delegates i.e Delegates with multiple methods attached to it are apparently a thing.
  • The Null conditional operator for events invocations.
    • EventName?.Invoke(doStuff);
    • Used to check if the EventName has any handlers before invoking it.
    • Is way more complicated than just simply checking EventName != null.
  • Replace your hard-coded stringly-typed variable names with nameof(var). Instead of getting runtime errors saying how the compiler couldn't find the variable, you'll get compile-time errors instead!