UP | HOME

Hacks

There are some actual, non-bullshit “hacks” to become a way better programmer.

It is well-understood nowadays that the main probjems are related to our congnitive and psychological limitations, including lack of self-discipline, so the solutions should be sought from the millenia old “spiritual” traditions of various cultures.

This is not bullshit - all the modern “self-improvement and focus books” do is to repackage this ancient knowledge.

Our main task as a good programmer is to cope with unnecessary overwhelming complexity and useless, redundant abstractions, priduced by narcissitic idiots. This is a non-trivial, painful task.

Since SICP it was realized that that the main methodology of dealing with complexity is discovering or creating an appropriate strtucture in (within) it. The seminal paper by Simon “The Architecture of Complexity” introduced some underlying universal patterns.

The enlightenment

The “ultimate goal” is to see things as they are and to produce just right, minimal (in a mathematical sense) abstractions and their optimal representations and implementations.

This requires a lot of knowledge, and this is what decent old MIT-style education (on the principles, rather than particulars) is all about.

Attention to details implies understanding pf underlying principles and causality, so it all begins with the right principles.

“Clarity (and brievity) is an evidence”, they said.

Religious awe.

This is not a juke. All religions have discivered some effective methods to manipulate and condition the elevated mental states.

This is exactly what we need, becase programming and math require the state of sharp focus, deep concetration, intence awareness and so-called “Flow”.

We have to self-induce such states upon ourselves, using the priming techniques, hacked and optimized from “spiritual tradttions” of the East.

Invocations

We have to have some sacred symbils and mantras (verbalized symbols) to be invoked (seen) on regular basis, to prime yp our zeal and feeling.

This means our workplace has to be decorated accordingly. The Lambda, the Haskell logo and other our sacrred symbils has to be placed everywhere.

Condemn the evil

Never cease to look in contempt and utter disgust at PHP, Webshit in geberal, Ethereum or J2EE as the manifestations of pure evil and the monuments of human stupidity.

Workplace

Good believers have special rooms (or even buildings) and special clothes for religious ceremonies and rituals. It works as prining.

It is a commin sense to have a cabinet or a isolated special-purpose room (lab) for doing one’s work. That room must be considered as sacred and threated with correspondig ave and zeal.

All the modern corporate business dress-codes and offices are based on the same notions.

Rituals as nativators

We need a cognitive priming (15 minutes or so) for being able to enter into the required state of “Flow”. Rituals are designed to streamline this process.

The main characteristic of a ritual is repeated regularity. It is repetion that changes us within.

Tools as idols

We should use the classic, legendary tools for the feeling of being within the same great lineage.

Producing a bloated config is a non-goal. Minimal, optimal and elegant configuration is what we strive for,

Elegance, aesthetics (and a good taste) is not optional. (This is one of our sacred mantras).

  • Vi
  • Emacs
  • LaTeX
  • The GNU toolchain
  • Erlang
  • MIT Scheme
  • SML/NJ
  • Isabelle, Coq, Agda
  • etc.

Mathematics

The pattern-recognition, generalization and use of proper (ideal) abstractions is what to be learnt from mathematics and abstract algebra.

It is crucial to realize that almost all mathematial abstractions can be formally defined as proper ADTs and Type-classes.

There is no arbitrariness or a coincedence in this fact.

Methodology

Last but not least, comes a methodology, which is essentually a systematic approach to problem solving.

Learn the classic languages by reading high quality old-school books

  • CLU
  • Scheme
  • Common Lisp (Emacs Lisp is OK)
  • Standard ML
  • Erlang

Read standard libraries of decent languages

  • Haskell
  • Scala
  • Erlang
  • Ocaml
  • Go

Read and use testing DSLs

  • scalatest is absolutely amazing.

Some libraries

  • Scala’s cats.
  • Python requests
  • Ocaml’s lwt

Author: <schiptsov@gmail.com>

Email: lngnmn2@yahoo.com

Created: 2023-08-08 Tue 18:39

Emacs 29.1.50 (Org mode 9.7-pre)