<HTML><HEAD>
<META content="text/html; charset=utf-8" http-equiv=Content-Type></HEAD>
<BODY style="WORD-WRAP: break-word; -webkit-nbsp-mode: space" dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: 'Calibri'; COLOR: #000000">
<DIV>David,</DIV>
<DIV> </DIV>
<DIV>
<DIV 
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'>> 
Could I resize them? Change the number of them?</DIV></DIV>
<DIV>
<DIV 
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'> </DIV></DIV>
<DIV>
<DIV 
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'>Resize, 
yes, including quick maximize/restore. Change the number? No. Six seemed like a 
good compromise between screen space and flexibility.</DIV></DIV>
<DIV>
<DIV 
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'> </DIV></DIV>
<DIV>
<DIV 
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'>> 
I'm wondering what the morals of the story are. What did the experience teach 
you? Did it change you?</DIV></DIV>
<DIV>
<DIV 
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'> </DIV></DIV>
<DIV>
<DIV 
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'>It 
taught me that my instincts were pretty good. The extra time spent designing a 
DSL and then building an IDE paid off with a fourfold improvement in development 
time compared with my first APL interpreter. That’s pretty remarkable for two 
projects whose end products were functionally identical.</DIV></DIV>
<DIV>
<DIV 
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'> </DIV></DIV>
<DIV>
<DIV 
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'>I 
was lucky that my first paid programming job, in my gap year when I was 19, 
happened to be writing a compiler, in FORTRAN IV, for a FORTRAN-like DSL for a 
market research company. Rather precociously, I started by rewriting the spec 
and sending it back. This was greeted with approval (The MD - an old term for 
CEO - of that company and I undertook other projects over subsequent years, 
including that first APL interpreter.) My rewrite simplified and unified various 
concepts. Thus I serendipitously became a specialist in language design and 
implementation, although professionally I had many ‘ordinary’ contracts as 
well.</DIV></DIV>
<DIV>
<DIV 
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'> </DIV></DIV>
<DIV>
<DIV 
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'>If 
anything changed me it was encountering Smalltalk five years later. My hobby 
programming language of choice switched almost overnight from APL to Smalltalk. 
And it was the reification of lexical closures which sealed the deal. I’d always 
wanted to reduce APL’s greed for memory by implementing ‘deferred execution’ 
(now known as ‘lazy evaluation’) for certain APL idioms, to eliminate the 
frequent need to compute large intermediate arrays. This would’ve been hard in a 
low-level language. When I brought a Smalltalk/V install home from work (I later 
bought Smalltalk/V with my own money!), I had a proof of concept for deferred 
execution (what is now called ‘lazy evaluation’) running in a few 
days.</DIV></DIV>
<DIV>
<DIV 
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'> </DIV></DIV>
<DIV>
<DIV 
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'>I’ve 
only written in Smalltalk once on a paid project, in 1997. But for another 
project, in 1998-2000, I implemented a DSL in VB6 (not my choice!) built around 
a datatype which was a piecewise linear function (in this case, a banded tax and 
benefits system). I demonstrated a proof of concept to my new boss on day two of 
the contract – by bringing my Smalltalk into the office and prototyping the 
datatype. This appeared to confirm to him that he’d hired the right guy off the 
street. We’re still friends.</DIV></DIV>
<DIV>
<DIV 
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'> </DIV></DIV>
<DIV>
<DIV 
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'>Cheers, 
Paul</DIV></DIV></DIV></DIV></BODY></HTML>