#+TITLE: 031/100 A retrospective on 030: Two days of exploratory programming.
#+author: screwtape
Note my 100daystooffload are not literal days.
* Extensive prose about exploratory programming (of veilid)
To reminisce about funny things we said as students, I was talking to - Bill, actually, whom I mentioned meeting again a while ago. Recalling that I am self-taught at computing (I studied physics=calculus). Trying to convey my discovery of computing, I asked the awkward question- you know when you are programming, and it feels like you are shooting lightning from your eyes? (Bill said "no" demurely). I think Exploratory Programming, and Sussman's Hack Attacks are better formed descriptions of psychological flow state programming, the same as athletes and other artists, and what examination frenzies are meant to induce - maybe for the first time - in green students.
After phost 030 I have become modestly comfortable with (DEFINE-PRESENTATION-METHOD ACCEPT ((type 'my-type) stream &key)) in a way I wasn't before, though I had been inching towards it for some time. I also discovered - part way through a prose paragraph as you may have noted that I had confusions about what implied a different PRESENTATION-TYPE and what a different VIEW. For now I think that portraying the same object in a TEXTUAL-VIEW (of a character stream)) versus a BITFIELD-VIEW (of a byte-stream) is clearly a case of VIEWs whereas sending some construction from a #'MAKE-LOAD-FORM might be one PRESENTATION-TYPE of one class, or a modified SEQUENCE construction of the classes slots might be another PRESENTATION-TYPE (hence the norm of :INHERIT-FROMing in DEFINE-PRESENTATION-TYPE basically from each created class that will be PRESENTed and ACCEPTed.
Hopefully I come to terms with CLIM output recording in a future day to upload, I really didn't get that yet, and COMMANDs and TRANSLATORS (which turn (presumably textual) record types into implied commands to execute).
I'm happy, hopefully not conceited with my divergence from my sheepish "well I'll try and replicate the rust in lisp" towards exploratory programming. I absolutely would not want to try and implement veilid in a way where the hopping of messages over nodes is one of the last things to come together, rather than an early and exuberant victory.
Viz a viz my append-only (ish) org-mode. I'm happy with it, though perhaps I could do to comb my phloges hair before releasing them into the gopher. In practice I write what comes to me, then debug in the repl until I'm comfortable it's fulfilling my intent, then I move on. In a few cases I succumbed to going back and pasting over some also otherwise working source blocks when I changed my mind further down, and didn't want to produce too many too similar blocks in which case the source block history wasn't a great history of what actually unfurled in the REPL.
As to where we actually got over about two days. PRESENTing and ACCEPTing is pretty great, which seems odd to say given that I haven't used them in an APPLICATION-FRAME at all yet. I think that's a nearby height to enjoy. Since I'm in emacs, SLIME really abrogated my need for the INSPECTOR CLOUSEAUX. I have started using the hyperspec via emacs as kmp suggested.
I guess I will mention that I am a bit down about my flame-war that seemed pretty forced, actually in one of Lispi's toot threads. You, avid reader, might remember better than I that the current fediverse is an unstable admixture: On one hand, the fediverse hopefuls, very visible in MATRIX chat rooms (which I was prophylactically banned from in NZ), the sort who seem to think that everything is almost alright and the sm0lnet types, who like me found our place in the mastodon as a sort of favour to friends' stability in the wash towards eternal October the first. A fediverse without sm0lnet values, a fediverse that is not sm0l is going to balkanise as it bulks up.
So here I write bittersweets about my swansonging an exploratory dirge for the elephantine tusked surface gopher. The mastodons give way to less hairy progeny. Distance looks our way.
* An appendix of codes
I think this is a "top of file" property, not a property drawer.
#+PROPERTY: header-args:lisp :session *lisp*
Since this collection refers to other days files, bits of it won't
make sense in aggregate here, but this should be mostly directly runnable.
#+RESULTS[29e19ba0d4582dc23040e41c83eb1f9078457c57]: require-clim
: #<PACKAGE "CLIM-USER">
** My only failure :028:failure:
At this point, I manually ==(in-package :clim-user)== in SLIME. I don't have a good way to do it.
** Presenting '1 :028:
#+name: lisp-session-package
#+begin_src lisp :results output
(present '1)
#+end_src
#+RESULTS[2144da066c3df4a64a263097b90eaad98cb0597f]: lisp-session-package
: 1
** A class that presents a certain slot :028:
#+name: certain-present
#+begin_src lisp :results output
(defclass certain-present ()
((presenting-slot :initarg :presenting-slot :accessor presenting-slot)
(foo :initform '1 :accessor foo)))