<HTML><HEAD></HEAD>
<BODY dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: 'Calibri'; COLOR: #000000">
<DIV>
<DIV
style='FONT-SIZE: small; TEXT-DECORATION: none; FONT-FAMILY: "Calibri"; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; DISPLAY: inline'>David,</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'>Five
years before I saw Smalltalk, I built a windowed IDE in C for a FORTH-like
language (called DE before I’d heard the term IDE) of my own design, which
rendered on a 25x80 monochrome text screen. Exactly six resizable and
maximizable/restorable, non-overlapping windows; no icons; no menus; no mouse.
Each window could display any of: selectable list of global functions; editable
function source with settable breakpoints; function symbolic object code;
contents of RAM (heap); contents of call stack; contents of value stack;
contents of local variable; source trace; object trace; application I/O console.
Where a value referenced something else symbolically, the symbol was shown; eg
READ_LINE+0014H, RAM+1210H. The IDE ran entirely in RAM on a 128K IBM PC clone.
The output was a symbolic object-code file. An STSC APL*PLUS program then
compiled this to binary – eventually taking 5 hours.</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
took me 9 months to use this language and IDE to implement I-APL, a complete,
standard-conforming APL interpreter which compiled to 26K of object code which
ran under a VM. The VM was then implemented on a number of platforms (by other
members of the I-APL project), including CP-M, Apple II, IBM PC, BBC Micro,
etc.</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
took me one month (1st-30th September 1987) to design the language and implement
the IDE. On schedule!</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'>My
take-away?</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'>Overlapping
windows are overrated, and maybe even counterproductive to dev (see most IDEs of
the past 20+ years: they use minimizable-in-place windows and docking). I do
love my mouse now, but tabbing through the windows was easy in my IDE. My
Smalltalk/V dev setup was always 3 non-overlapping windows: Transcript,
Workbench (my idea: ListBox+TextEdit where I could define & run small pieces
of code), and one CHB for the app. A second, overlapping, CHB, usually
minimized, was used for browsing non-app classes. Of course walkback windows and
inspectors overlapped (but when I get around to writing a Smalltalk dev
environment, they won’t.)</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'>Menus
*might* be a design choice left over from when graphics displays had much lower
resolutions, to save on real estate. (Look at the welcome proliferation of
toolbars.) </DIV>
<DIV style="TEXT-DECORATION: ; FONT-FAMILY: ; COLOR: ; DISPLAY: inline">In those
days, IBM keyboards had 10 function keys arranged in 2 columns on the left. I
stole WordStar’s 2-function-key commands (one from the left column, one from the
right) allowing 25 commands at my fingertips without having to hit CTRL or ALT.
These were my ‘menu shortcuts’ and all I needed.</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'>And
I still find icons annoying: they’re not scalable, ie eventually they all look
like a multicoloured splodge. Same with emojis. Okay, maybe my eyesight isn’t as
good as it used to be.</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'>As
you can probably tell, I’m still resting on this particular laurel.</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>