[plt-dev] lessons learned

From: Matthias Felleisen (matthias at ccs.neu.edu)
Date: Thu May 21 13:43:57 EDT 2009

Today's chase for the source of

    define-compound-unit/infer: untagged initialization dependent
    signature mred^ is supplied from a later unit with link temp4

cost me an hour of my time when a few seconds of common sense would  
have sufficed. I don't have such hours to waste.

;; ---

LESSON 1: When I gave the POPL keynote a few years ago about our  
project, every single part of the talk had a single lesson:

       **************************
       * ERROR MESSAGES MATTER. *
       **************************

I just can't see how the above error message would point anyone to  
this specification

> (define-values/invoke-unit/infer
>   (export graphics^)
>   (link standard-mred@ graphics-posn-less@))

on line 15 of big-draw.ss. The name of the construct is different  
from that in the error message. And the message itself is gobbldedygook.

;; ---

LESSON 2: People recently (27 Mar 2009) changed (see svn log, svn  
blame) these lines, and didn't even both to run the file as they did.

       *********************************
       * WHEN YOU EDIT A FILE, RUN IT. *
       *********************************

It takes a cmd-t or a click-run and it evaluates in 3 seconds. Doing  
so would have revealed the bug. 3 SECONDS, 1 HOUR.

;; ---

LESSON 3: When you do synthesize such language constructs, put the  
effort in to get them right. A simple topological sort would probably  
avoid all this nonsense.

;; ---

Guys, this shop is not the federal government. We can't afford this  
sloppiness -- Matthias







Posted on the dev mailing list.