The Trivium: The next non-programming book you should read for learning programming

Sister Miriam Joseph Rauh’s book “The Trivium: The Liberal Arts of Logic, Grammar, and Rhetoric“, is one of the best books on programming.  But it’s not about programming – it’s about the Trivium.

What is the Trivium?  Its the first three subjects of classical education.  Grammar is all about languages and their rules.  Logic is well, logic.  And Rhetoric is about persuading people.  The third topic may not relate to programming (maybe in meetings), but the first two are crucial.

This work puts into words a whole swath of thought that you take for granted while you write your programs.

One little snippet that illustrates the point is a section called “Creating Symbols from Reality: Generation of a Concept”

First the external senses-sight, hearing, touch, smell, taste-operate on an object present before us and produce a percept.

Can I describe my program well without observing it’s behavior?  Sure I can throw some code up, but the code won’t be very good unless I observe it’s behavior with tests and make adjustments.

The internal senses, primarily the imagination, produce a phantasm or mental image of the individual object perceived, and this phantasm is retained and can be reproduced at will in the absence of the object.

The definitions of our classes which we use to create individual instances, can only be defined with respect to the behaviors we observe in our tests (manual or automated), or they are the subject of our imaginations.

Sister Miriam Joseph goes on to state that the external senses (our tests) aren’t the only ones used to create a class (definition or any instance of it).

There are four internal senses: the imagination, the sensuous memory, the common or central or synthesizing sense, and instinct.  The intellect through abstraction produces the concept.  The imagination is the meeting ground between the senses and the intellect.  From the phantasms in the imagination, the intellect abstracts that which is common and necessary to all the phantasms of similar objects… this is the essence.

I almost see our upfront design is our imagination, our tests are our senses, and we use our intellect to create the abstractions (classes) that make our design and tests agree.

She comes up with some definitions:

Percept:  the image created by the external sense upon encountering reality.

Phantasm: the mental image created by the internal sense, primarily the imagination.

Concept: the abstraction created by the intellect through the recognition of the essence.

When we write classes, what we have in mind to create is the phantasm, the finished class is the concept, and the percept is the result of our tests.  If our tests create a percept that conflicts with the phantasm, then the concept is incorrect, our tests are incorrect, or our imagination of it is wrong (change the design).  This is the core of TDD.

I’m going to be taking notes and posting as I go through this book.   When you read it, she’s using so many words that programmers use all the time.  I’ve come to realize that programming is a liberal art.  Programming is the application of grammar and logic to solve problems.

Fittings and adjustments

Everybody makes mistakes – and I think especially so with 3d printed parts.  Right now I’m making a case for the computer on the ROV and I have to make some modifications to things to get it all to fit on the pontoons.

  1. The trusses should mount on the very edge of the mounting plates rather than one row in.  The raspi 2 case mounts will have to be adjusted accordingly.
  2. The case itself needs to be lengthened again to accommodate the wifi antenna.
  3. I’ll have to figure out a proper way to make an airtight top to the computer case.

IMG_0600 IMG_0599

Second pontoon finished – and engine module designed.

Here’s a picture of the parts I have printed so far – the front and backs of the pontoons and one truss.

IMG_0590

Here are some pictures of the engine module that will stack inside the pontoon ends and hold the motors underwater there’s a tube running from the motor compartment to the top of the pontoon (these pictures are upside down – but it’s how it will look when printed).

engine1

 

 

engine2

Printing 2nd pontoon this morning

My octopi barfed this morning and I had to re-image the sdcard.

This is why you need to keep configuration of linux stuff to scripts or automated.

Got that back up and running and I’m printing up my 2nd pontoon.  Hopefully I’ll also do the 2nd truss.

I need to get around to making the engine modules – I think those are important 😉

First pontoon printed!

Got the first pontoon printed today. Looks really nice!  I’m going to have to cover it with some form of sealent as it’s leaking a little bit.  Sort of expected though.

Currently printing out truss version two. The first one had half the channel width – so it was a failure.

Hopefully I’ll print out the second pontoon and truss tomorrow.  I’ll probably make the scad for the motor module or the computer platform.

Coastal Explorer Project 6/24/2015

My project files are located at http://www.thingiverse.com/thing:893825

So today I tried to print out two copies of the pontoons and see how they faired.  My first problem was that my printrbot simple metal must have slid on my bench and the power supply fell.  I have to test it this eventing.

The pontoons got 80% finished.  They interlocked pretty nicely but I didn’t get a really good amount of buoyancy.  I’m going to double the radius of the pontoons and try building only one tomorrow.