Send More Paramedics

λ λ λ

Walking the Clojure Source History (a talk not given)

Years ago I planned to give a talk centered around exploring the Clojure source history to find interesting buried artifacts. In service to that goal I walked every commit in the repository to see what I could find. There were indeed interesting discoveries, but eventually my passion for giving the talk1 dissipated. However, I recent found my notes and so rather than let them disappear forever I present them unfiltered below. Excuse my poor handwriting.


  1. Or any talk for that matter. 

The Devil’s Programming Glossary: Thought-bleater

thought-bleater noun

A person who shares their thoughts because they had them.

see also: thought-leader

The Best Things and Stuff of 2019

Great things and people that I discovered, learned, read, met, etc. in 2019. No particular ordering is implied. Not everything is new.

also: see the lists from 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011 and 2010

Great blog-posts / articles read

Most viewed blog posts by me

I’ve been trying something new over the past couple of years. That is, I’ve been posting threads and such on my Twitter with a small handful of posts here That said, there were a few high-traffic posts on my blog.

  • Notes on Interactive Programming EnvironmentsPrompted by the book of the same name, I wrote some rough notes on programming environments past, present, and future. Many people have thought the same thoughts and so it was a surprisingly popular post.
  • Privacy LostA list of the books taken from Ola Bini during his unwarranted arrest earlier in the year. These books were offered up by authorities as evidence of some kind of sinister nature, so naturally they should be more widely read.

Favorite technical books discovered (and read)

I’ve intentionally reduced the number of technical books that I consume, but there are a few that I “found” in 2019 that are stellar.

  • The Architecture Machine: Toward a More Human Environment by Nicholas Negroponte – A look into a possible future where human/computer collaboration is more finely tuned. The future proposed should have been our present, but has fallen far short.
  • Literary Machines by Ted Nelson – A deeper look into Ted Nelson’s ideas beyond those found in Computer Lib including some of the deeper ideas attempted in Project Xanadu.
  • A Software Tools SamplerA very dated but fascinating look at the components of a programming system built from the ground up including: search facilities, build tooling, and even a full-screen text editor.

Favorite non-technical books read

  • Stalking the Wild Asparagus by Euell Gibbons – Gibbons is little known these days, but his home-spun, worldly wisdom can be sampled on YouTube in the form of 60s-era Grape Nuts commercials. Gibbons’ shtick back then was on natural foods and return to nature pop movements and this book is a great window into the culinary fringe of his time.
  • Annihilation by Jeff VanderMeer – I was motivated to read the book after watching the fantastic film of the same name. Truth be told, the book is nothing like the film and that fact was a pleasant surprise even though I adored the film. There are just enough creepy moments in this book to keep you on your toes and the book has gotten me fascinated in the little-explored science fiction sub-genre I like to call “Biosystem Horror.”
  • Rites of the Renouncer by Ben Kamphaus – It’s always fun to discover the first work from a new author and it was a joy to read Kamphaus’ “Rites of the Renouncer.” The sub-genre of science fiction that the book falls under is difficult to pin down and indeed seems to draw from a variety of disparate influences. It’s almost as if AE Van Vogt was thrust forward in time, developed a sleep phase disorder, passed the early morning hours listening to Ambient/Drone and wrote this novel on a Kaypro II found whilst dumpster-diving. The story itself is straight-forward, but the themes explored are nuanced and handled well. From notions of consciousness, to mind hacks, to isolation, to even friendship — there’s a lot to explore in the pages of this svelte novella. It left me wanting more.
  • Night Film by Marisha Pessl — Exactly the kind of book that fits right into my wheelhouse – that is, a well-written thriller that blurs the lines between fiction, world-building, and multimedia. I couldn’t put the book down and was completely drawn in to the mystery described in the story.
  • Understanding Media by Marshall McLuhan – As a kid I used to re-read books very often but as I’ve gotten older I tend not to do so. However, the nature of this book has compelled me to take another swing at it. McLuhan was a James Joyce scholar and Finnegan’s Wake must’ve influenced his writing style. To say the least this book was a challenge to read and process and even after two reads I can’t say that I’ve fully grasped its content. McLuhan’s style is rich with references and coloring from innumerable sources. Indeed, to really get this book requires a near fluent understanding of literature, architecture, film, music, and 50-60s era pop-culture. The many forking paths of influence on this work, while daunting, are worth traversing.

Number of books published

0

Number of books written

0

Number of books read

105

Favorite musicians discovered

  • Neptune by Higher Authorities – Reminiscent of Can with a dash of Drone and Animal Collective.
  • Tombs of the Blind Dead by Zoltan – You have to be into old horror film soundtracks to really get this, but it’s one of the few of that kind that may have a somewhat general appeal.

Favorite gritty mystery TV series set in Iceland

Trapped

Favorite films discovered

  • True GritI discovered this 9+ years after its release, but sometimes good things are worth waiting for. Mattie Ross and Cogburn are truly memorable characters executed perfectly by the actors. This is my favorite Western since Unforgiven.
  • It FollowsOne of the best horror films of the decade with perhaps the best exposition that I’ve ever seen in any film.

Favorite programming languages (or related) I hacked on/with

  • KernelI finally had a chance to read the associated papers more closely and explore a couple of the extant implementations. I look forward to going deeper here (see below).
  • RI explored some Project Jupyter notebooks to get a feel for the medium and enjoyed the experience very much.

Programming languages used for work-related projects

  • Clojure – 2020 marks the 10th year1 as a full-time Clojure programmer.
  • ClojureScript – While I don’t use CLJS directly as much as CLJ, I worked on a project for half of 2020 that uses it extensively.
  • Datalog – The Datomic flavor of Datalog is the flavor of choice for database access, be it in-process, in the cloud, or even in the browser.

Programming languages (and related) that I hope to explore more deeply

  • LuaLong overdue. Though I’m familiar with the language from a theoretical aspect, I want to finally write some for my personal projects.
  • RustAs I mentioned before, Rust scratches a “systems-level” itch that I get from time to time. I really hope to take an old C codebase and convert it to Rust in 2020… fingers crossed that I can finally make that happen.
  • KernelI have a quarter-baked janky Lisp in JS that I would like to go whole-Kernel with.

Favorite papers discovered (and read)

Here are a few that I enjoyed in 2019.

  • A City is Not a Tree by Christopher Alexander –A book about software, that’s not actual about software.
  • Man-computer SymbiosisI’ve gotten more interested in Augmented Intelligence over the past few years and this paper is a classic in the field.

Still haven’t read…

Snow Crash, A Fire upon the Deep, Don Quixote, The Contortionists Handbook and a boat-load of scifi

Favorite/Only technical conference attended

None

Favorite code read

  • Write Your Own VMA nice codebase coupled with a very good writeup on the design thinking.
  • sciMichiel Borkent’s Small Clojure Interpreter.
  • Microsoft CalculatorThe source code to the ubiquitous Windows Calculator application.

Life-changing technology “discovered”

  • Nothing this year.

State of plans from 2019

Plans for 2020

  • Explore the depths of the train game genreThere are a couple of train gaming groups in my area that I’ve been invited to, so this is a real possibility.
  • Rethink and reorganize my website. — With a basis in Markdown and org-mode to try and reclaim control over my content.
  • At least one installment of Read-Eval-Print-λove in 2020 — I have the code and outline drawn up for a minimal text editor.
  • Resuscitate my old Clojure projects. — Aside from those already in Contrib, my personal projects could use some love.
  • Write a paperMake something of that outline.
  • Explore more deeply the fields of Augmented Intelligence and Cybernetics.
  • Explore vintage computing systems. — Starting with the TRS-80 Model 100 and the 6502 CPU.

2019 Tech Radar

  • try: R
  • adopt: KAMAS
  • keep: Datalog
  • hold: Prolog
  • stop: BASIC

People who inspired me in 2019 (in no particular order)

Yuki, Keita, Shota, Craig I Andera, Carin Meier, Justin Gehtland, Rich Hickey, Jenn Schiffer, Nick Bentley, Paula Gearon, Zeeshan Lakhani, Brian Goetz, David Nolen, Jeb Beich, Paul Greenhill, Kristin Looney, Andy Looney, Chas Emerick, Paul deGrandis, Nada Amin, Alvaro Videla, Slava Pestov, Mike Fikes, Alex Miller, Alexandria Ocasio-Cortez, Alan Kay, Alan Watts, Elizabeth Warren, Warren Ellis, Naoko Higashide, Zach Tellman, Nate Prawdzik, Tim Good, Tim Ewald, Stu Halloway, and Michael Berstein.

Onward to 2020!

:F


  1. This is strictly my work-life time. My total use of Clojure has been longer. 

Privacy Lost

Ola Bini has been arrested by the Ecuadorian Police based on questionable links to Julian Assange and Wikileaks. Although he has been arrested, no charges against him have yet been filed.

Near to the time of Ola’s arrest the Ecuadorian police tweeted an obscured photo of a person in detention and that person’s personal belongings, including nearly 20 laptops, numerous drives, and 12 books.

The original tweet read:

APREHENDIDO ciudadano en #Quito, que mediante la utilización de plataformas digitales de redes sociales, transmitía contenido de connotación social (divulgación de información) a través de sitios web, entre los mas destacados #WikiLeaks. El sujeto utilizaba perfiles falsos.

A rough translation is as follows:

Citizen Apprehended in #Quito, who through the use of social networks, transmitted content of social connotation (dissemination of information) through websites, including most prominently WikiLeaks.

That tweet has since been deleted. It is not 100% certain if Ola is the “citizen” in question, but I find the images of the belongings particularly compelling.1 I had the good fortune of meeting and talking with Ola on numerous occasions and found him a deep thinker who was a true lover of knowledge and intellectually engaged with matters of computing thoughtfully and eloquently. Therefore, as a lover of knowledge myself I dug in on the image above to identify the books procured as so-called evidence.2

Update: Ola released an official statement. In this statement, Ola says something troubling, specifically, “the case against me is based on the books I’ve read and the technology I have.”

Below you’ll find the books confiscated by the Ecuadorian police (left to right, top to bottom):

I’ve always been a proponent in the idea that to know someone is to read what they read. Therefore, I’m digging into Ola’s books3 to learn a little more about him and the topics and problems that have grown in importance during troubling times.4

#FreeOlaBini


  1. While the obscured face does hint at Ola, the books are the give-away. 

  2. It’s unclear what these items might be evidence of, but you’d be hard-pressed to find a better way to drum up FUD than to splay those items out in such a manner as the image above shows — a Guy Fawkes mask would have been a bit too much. 

  3. My awareness of most of these books originally came about by learning that Ola was reading them

  4. To wit, knowledge is power. 

Notes on Interactive Computing Environments

In the pantheon of my personal favorite books on computing, Interactive Programming Environments by Barstow1, Shrobe, and Sandewall places somewhere in the proverbial chancel.

The book covers a wide range of topics from Lisp Machines, Smalltalk, Pascal, OOP, UNIX, AI, and intelligent agents but the common thread is this:

Your programming environments should be an active partner in the act of creating systems.

This post contains notes on some of the points along this vector with some jumping-off points for further exploration and research.

Moore and Forth

Programming a Problem-Oriented Language by Charles Moore (PDF) is Chuck Moore’s thesis on Forth and its design and core philosophy. The genesis of the language stems from a simple premise:

I’ve written many programs over the years. I’ve tried to write good programs, and I’ve observed the manner in which I write them rather critically. My goal has been to decrease the effort required and increase the quality produced.

Moore’s motivations culminated in the Forth programming language, which in turn led to the term “problem-oriented-language.” The basic idea is that a programming language should facilitate the construction of programs by allowing you to build in layers, where each layer is a specialized language for building the layer above it. Certainly the book dives deeper into matters such as simplicity, YAGNI, bootstrapping, and the like, but the core idea of problem-orientation is the key take away.

Fundament

Moore’s work encourages the creation of the entire programming stack, but there are varying levels at which an interactive environment can evolve up from. For example, one of my attempts at the IPE idea built on the Java Virtual Machine and its included graphical interface APIs. The idea was to build a tool that I could explore Java APIs with in an interactive manner. However, to do that I had to build a total environment for building scratchpads for exploration.

I got it into a good place eventually, but the increased capabilities of the BlueJ environment convinced me to end development. Later I worked on various IPEs hosted on platforms varying from CLIPS, to Emacs, to Emacs in CLIPS, to JavaScript. I learned a lot along the way, but never felt that I had even scratched the surface of finding an environment that helped me to explore.

Work for the next 10 years

Any work in IPEs is likely to require a huge amount of effort and brain-power to crack. Indeed, you could expect to spend the next 10-years just gaining a deep understanding of the problem space and contributing to the rich landscape. Even after the 10-years are spent the expected likelihood is that any artifacts created along the way are likely to find little to no usage or to be obviated by something else entirely. Enormous amounts of effort went into systems such as Interlisp, Project Chandler, Backus’ FP 2, the Data General Eclipse MV/8000, and Xanadu and every one of them are relegated to the dustbin of computing history. It’s difficult to start a project that most likely will merely provide footnotes to the next generation of proposed solutions.

So it goes.

Bootstrapping

Smalltalk is a great example of a system that evolved via bootstrapping new iterations using previous versions of itself. Alan Kay talks about this as the ideal for Smalltalk development for much of its early life in his famous OOPSLA 1997 talk. The whole talk is an amazing repository of wisdom that hasn’t yet been truly tapped for inspiration.

That said, while Smalltalk itself moved away from the meta-language bootstrapping model with the development of Smalltalk-80, the early principles are foundational. The seminal book Smalltalk-80: The Language and Its Implementation captures the gestalt of the early days by including the source code for a VM for the language described in the book using the language described in the book. The ideal outlined by early Smalltalk implementations (and Squeak) is an ideal that IPEs should strive for. That is, the purpose of an Interactive Programming Environment should not be to provide a solution, but instead to provide a set of ideas useful for exploring higher-level ideas better than those provided in the base environment.

Emacs

These days the closest thing that I have to a powerful IPE in my life is the Emacs text editor. In addition to my place for writing blog posts, Emacs is also my programming environment, idea scratchpad, TODO-list manager, a source control interface, and occasionally a game system. Emacs is extended with the Emacs Lisp programming language and provides a set of abstractions around working with text buffers. The act of extending Emacs is a bit of black magic, but at least one interesting manual for writing extensions has been written.

A total head-space

Douglas Englebart’s NLS was a total collaborative environment meant to enable its users to engage in “knowledge work.” The idea was to provide a repository for knowledge, tools for collaboration, idea capture, and discovery. However, NLS was not just a set of software tools, instead it was an environment that ensconced the knowledge worker.

From the now ubiquitous mouse to the chorded keyboard, the NLS workspace was designed as a phase-1 stage in moving towards human-machine co-evolution. Perhaps the ideal for IPEs is not just a software concern but instead a total headspace. There was a popular trend in software writing tools that promised immersive environments (see Writeroom and FocusWriter for examples), but they stopped at the screen. Perhaps something akin to Dan Price’s Hobbit home, a hideaway van, or perhaps Bruce Hauman‘s geodesic dome is a starting point for a truly immersive IPE… an IIPE so to speak.

Wood-workers build their own benches

My colleague Tim Ewald gave one of the best programming talks that I’ve ever seen called Programming With Hand Tools in which he outlines three reasons for using hand tools in construction:

  1. (They’re) simple to the point of primitive
  2. (They provide) great precision and control
  3. (Allow) flexibility to make anything

He goes on to motivate these points in the talk, but if you’ve read to this point then you probably see how they relate to the idea of immersive interactive programming environments.

I’ll leave you with this quote:

The motivation, in the first place, is just filling a gap… It’s a contradiction. You have to really know what you’re missing. And in order to know what you’re missing, then you have to know what you have.

Dominick Fernow

:F


  1. David Barstow is an all-star of the thrift-store computing-books aisle with high-quality books available for mere pennies including IPEs and also the great Knowledge-based Program Construction

  2. Alan Dipert introduced me to the FP language and I’ve studied it on and off for the past few years. It never fails to surprise. His passion for topics such as I’m outlining in this post is/was infectious and he’s probably forgotten more about the subject than I’ve ever known.