<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>