Theo Verelst Diary Page

Fri Apr 20 11:40:52 2001

I've decided after good example to write some diary pages with toughts and events.

Oh, in case anybody fails to understand, I'd like to remind them that these pages are copyrighted, and that everything found here may not be redistributed in any other way then over this direct link without my prior consent. That includes family, christianity, and other cheats. The simple reason is that it may well be that some people have been ill informed because they've spread illegal 'copies' of my materials even with modifications. Apart from my moral judgement, that is illegal, and will be treated as such by me. Make as many references to these pages as you like, make hardcopies, but only of the whole page, including the html-references, and without changing a iota or tittel...

And if not? I won't hesitate to use legal means to correct wrong that may be done otherwise. And I am serious. I usually am. I'm not sure I could get 'attempt to grave emotional assault' out of it, but infrigement on copyright rules is serious enough. And Jesus called upon us to respect the authorities of state, so christians would of course never do such a thing. Lying, imagine that.

Previous Diary Entries

Fri Apr 20 11:40:47 2001

Bwise thought trains and softscapes. Maybe I'll write some more personal thoughts, I'm not sure, way too much needs more thought and evaluation, and when the personal is connected, I'm sure certain circles like me little enough not to burden people I like with their attention too much.

Multiple windows

About 15 years ago, I was exposed to lets say the practical application of windows on capable enough computer screens, the machines I most remember, though I don't recall exactly, there may have been others, too, are Apolo workstations, which I had acces to by somehow getting a password from the section I had started some research in as I guess second year student, probably for a chip design assignment, at electrical engineering dept. of university, as most will understand.

For the time, those were advanced machines enough, about the first popular workstations, I guess, major 19 inch black and white monitors, used in reverse 'black on white' mode, with reasonable enough resolution, even for today, an I think 68020 processor, major memeory and discs, and running unix and a windows environment allowing multi tasking over multiple windows.

Pretty much all the fun of contemporary machines was there in not even so bad form: talking between users, file transfer, nice fonts to type with, drawing, all that stuff, major fun. I did some 3D graphics programming at the time, to render rational bezier surfaces, a sort of capable curved surfaces with pleasing mathematical properties, which I wanted to render using a special chip, after the example of two Hewlett Packard researchers, who looked at that subject before me, and wanted at least to get a feel for such surfaces, and how to make nice graphics scenes with them.

So I checked out the 2d (I think it was starlib or so) graphics programmers manual pages for the machines, being a university they were around, and did the first line drawings of such surfaces on those newly available workstations, which was fun and major advanced at the time, quite major. I also made more than average use of the also quite new laser printer facilities at the time, as they should be within reason freely available to students, and used quite some toner making line drawings of those curved surfaces also on the printer. Learned some postscript along the way, too.

In fact I even made shaded images with the laser, too, which was good enough even to use in publications, which I wasn't invited for, though, for now other reasons than I though at the time.

Those machines were fun, they an unix, lets say a reasonably professional equivalent of contemporarily popular Linux, with in fact most things now available in Linux present already, including networking, though at first I think the global connections weren't there all the time, probably more section and campus wide.

Maybe a year later, I bought an Atari ST, a completely acceptable researcher machine at the time, cheap and a lot of power, comparatively speaking, and a profi enough, straightforward design, which I also learned to program, also in C, using various compilers I got 'borrow' from here and there. I also had a modem, and transfered programs between the university workstations and the atari at home, which meant sort of distributed development, when I'd get to the workstations I would be able to use the big screen and more computer horsepower, also of the network connected mini computer systems available, and at home at any moment I could also work on the software.

The fun of the windows was of course to have more than one task available at a time, those workstation windows would for instance run a unix shell or process a piece, and therefor be active in parallel on the screen, which was new and appealing. My graphics software didn't use windows at first, I limited it to screen 'borrow' mode, there weren't real standards yet to make a portable window application. Later on, I programmed some X window programs, which could be ported, except not directly to the Atari's.

Today, I made Bwise multiple window, just as an experiment. I've played around with drawing programs and block programming and network representation programs also at universtity, when I hadn't yet realized how evil people where I worked might actually be, also using (early versions) of tcl/tk, and also some other scientific packages gotten from other universities over the web, and in fact also 3D software, like Mesa/opengl, bvut also my own, to be combined with a editable canvas.

Todays experiment, on the lame old 486 windows 3.11 (gmph) machine, is more or less an exercise in the efficient and effective programming of applications with the block functionality in there, I want to type only little lines to make all things work, that is sort of the challenge, or game. So I used the parameterisation in terms of tk window names in some canvas creation procedures, and made myself a few seperate bwise windows, which works, except that I use a global variable to indicate the 'current' window, for instance for graphics interactions, creating new blocks, showing popup menus to create and modify/run blocks, and for activating the blocks and data transfer with 'run' like commands.

The idea is then that changing between windows, by putting another on top into focus must somehow instruct the bwise routines as to what happened, other wise calling a menu in one window would create blocks in another, which is not the target, of course, normally. Flexible as our list processing and GUI language is, at least two quick fixes to the problem presented themselves, apart from the rather tedious effort of adding a 'window name' parameter to every bwise related routine. The first being to make sure a click in a bwise window is enough to set the 'mc' (master canvas) parameter to the right window path value, which can be done by a button press interactor 'bind' command for each existing window, for instance when it is created.

The second sort of funny method I tried was to use a window enter (/leave) bind, which simply sets the 'current canvas' variable to the name of every bwise window the mouse cursor enters, which works for the purpose: point at some bwise canvas, click the 2d mouse button, and a menu pops up with every function name in it that starts with 'new', to create new blocks in that canvas at that mouse position.