Theo Verelst Diary Page

Wed Mar 21 23:19:40 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

Wed Mar 21 23:19:32 2001

All that talk about bwise, what is it, how does it smell, what does it look like, but in essence, what can it do or mean?

Life in the fast lane, provincial alley, conservative sinfullness, protestant freedom struggle, rich informatiion haves, unmature in evil castaside, doormat be-not-subdued, won't receive the sign of the nazi name, want and get out of the evil big mama live-suck, or 'simply' be an engineer/scientist and with hard enough work earn a more than modest living ?

Life expectance

The latter has been my main idea, not so much a target, more the natural and not undesirable outcome of logical choices, for many years as I studies, before than time, and as underlying thought I guess years after.

Currently the benefits of such life aren't mine, though hopefully will be, and only in two other modes of living not alien to me I'd find enough space, satisfaction, fullfillment and possibility to feel at least ok, which would be lets say living with music in some seriously free and contentwise enough form of application of artistry (not so much science or technical skills), and the idea of occupying myself with my faith in a serious and somehow fruitfull way, with various options not limited to translation and study.

Wannabee a preacher or a reverent? Not that much, I think normally, though both ideas contain essence of good enough thoughts. The idea of going around and performing some preaching activity, apart from having to be asked or given opportunity for such, under agreeable conditions, has not been much of a aim in my life. Playing reverent is I guess a local and longer term goal I don't thing ever got much space either, and I don't know what it exactly means, though dealing with people and their lives for a longer time and being a trustworthy party in it with some foundation in faith is on itself not an all too weird or unpractical idea.

Sais he, typing on a stupid 486 with his own software doing both this automated diary text window as well as major simulation possibility software himself, currently not (at this moment) making not a penny in i t. As in 'why is it all that way'.

Because I refused to play along with the no doubt evil games of various parties in my life and society, for one thing. Because I've got some standards of interest and achievement I didn't want to put aside for no good reason at all, or let others deny me or claim in my place that I probably could find worthy of immedeate capital punishment instead of the benefitsof my work, ideas and ways of living.

Because it has pleased the almighty and holy God in heaven to put some servant or person to work in this miserable world to make a point or produce fruits for His names' sake? Possibly. That such elements are there in my life would better be true, or I'm living in a lie that I should run out of as hard as I can, there are not that many worse things than religious delusions, I guess.

But to say that my life is full and satisfactory and in my opinion full of proof of the complete fullfillment of such a view would be a gross exagaration. Not that I'm not serious about the idea, but mainly because I'm not satisfied with much I percieve and with various undesirable circumstances, and maybe because of the hidden things that are not easily made visible reliably and because of the senselessness of various efforts I have done without searching for deeper meanings where those may be hard to find.

If I were god, I guess I would change a thing or two, which is not out of desire for rebellion, I just don't like many things in my and others' lives, so I'd practically want to change them. Of course there are different and higher considerations for which I'm not unsensitive, but firsts thing first would not let me leave things as they are in my life, and I guess leave me with many questions as to how to effectively judge and prevent much evil and misery in the world.

Does one let an evil creation live? And if so, why and how, and what is the place and the consequence of law and justice in it?

The chapter on the 10 commandments in Deuteronomy 5 end with a phrase like 'and turning not left or right from My commandments, ... so that he may live well and in abundance and see good days in his life' or something to that extend, I read it this weak but forgot the exact phrasing. In other words the quite present capital punishment for various sins, the strong condamnation of many forms of evil, the stern-ness and rigorousness in these laws are countered by the idea that there is a good reason, so that we may live well, if we were the intended people of israel.

At least the idea still is that gods law is for that reason: so that we may live well, either in this life, in our thoughts, in spiritual sense, and maybe in the future. Little can be said about the validity of the idea that the maker of it all has something to say about how the created functions best (in real sense, not as the implementation of some stupid, unfounded rule) except that He may have put limitations forward because of his will, his rules and maybe his way of dealing wih life, expecially in a sinfull world.

So become a rich and famous rock star, on top of all the pleasures of life, breaking youth free from their condemnation and miserable ties in life, and giving them an idea about freedom, loving of what is good, and denial of an evil world system in practice? Of course not a very complete and correct image, but then again, there are worse things. " when I was young, 'thought that live was wonderfull, a miracle",..

More later, not because I'm out of breath but I want to put the following stuff on and am thinking about what to write, and may even throw in some texts ( guess on a diary page there's not that much of a copyright prob, otherwise please inform me), and I only have so many hours a day, going between internet, job checking, some other activities, some research, and some fruitfull anchien machine centered work and typing.

The bwise picts

Will they change the world? Oh boy, he's off in a fit of nutsness again, aint he. First, of course it doesn't work, second, if it does, he stole the code and it is impossible to use for yourselft, and furthermore it isn't interesting... No, I just have the strong impression that by my not being too obscure these things have effect, and considering some almost incredible past resistance against this stuff, it would seem logical that at least it has some relevance, which also objectively has good reasons, it is solid and good stuff.

Lets start with the idea again, bwise is short for blockwise, which means that the main thing engineers for instance do is put in the name of the package that takes as starting point to put little graphics blocks on a scrollable canvas that stand for some program activity, starting with the most essential ones: data input, data display and processing blocks.

An example bwise canvas with some connected and some
unconnected blocks, a popup menu, and visual running feedback

At the left of the top of the canvas (under the buttons which are there to put blocks and wires on the canvas, they could be menus, but I prefer not to have to 'flap' them down for the most used ones, like some professional packages), there first appears an entry block, which allows a string to be typed in, which is put at the output pin. The next block is a procedure block which normally does some processing based on its input pin data, and presents the results on its output pin(s). In this case, it multiplies a number by two. Blocks were created by typing 'newentry; newproc; newmon' on the command line, and connecting them up by clicking on the pins to turn two green, and making a wire by pressing the button with that name. Clicking and holding anywhere in the yellow areas of the blocks let you move them around freely on the canvas, leaving the wires connected.

The entry block has a builtin 'run' routine, which will make data flow through all the blocks connected to its output when 'return' is pressed, so in short type in a number in the entry, press return, and the network will start computing, showing graphically how the data moves by in turn making the pins turn green (showing data transfer from one block to another) between the entry and the procedure blocks, followed by the next link. Then the outcome of the doubling computation appears in the text window as is shown. No tricks, and as we'l see later on, and examplify below, all this is completely unobscured by hidden mechanisms and structures, and completely open programmable, and most of all, understandable for every one with not even more than average IQ, I'm sure.

Maybe in some cases, that is a disadvantage, but for making clear some things are complicated and lets say honorable enough to occupy oneself with, it is no good practice I think to obscure or unnecessarily portray things in a more complicated than needed manner.

To give a bwise user information about an access to the input and output data on the pins of the block, and the function the gouverns the behaviour of the block, the 'data' entry form the popup menu can be used to open a new window. Just point at the 'Proc1' block with the mouse, click somewhere in the yellow part with the second mouse button (the middle one), select 'Data' from the popup menu with the left mouse button, and the info window appears like this:

A block info window

For every variable associated with Proc1, a line appears, stating the variable name followed by an editable entry with the content of that variable. The lines are sorted alphabetically, in this case the first one contains the behaviour tcl code associated with the block.

For someone familiar with tcl, it does exactly what one may expect: set the output variable to the result of the computation based on the input. The [expr ...] construction means take the ... as an expression such as $a * $b, where $ always means 'content of the variable', compute the results, and fill it in in the place of the [...] in this case to set the output variable.

In the case of the example screen dump of this window, the input is three, and the output has been computed as being 6, which is correct. This could have happened in various ways, either by pressing the return key with the cursor in the Entry1 block, which sets the whole chain into motion, or by having used the popup menu with the 'Eval'-uate option, to invoke the Proc1 blocks' function under user control.

The main options from the menu currently are (short desription):

* Eval Short for evaluate, which calls the block function form the block the menu is activated on, which is in gray font on top of the menu.

* Data Show the info window for this block.

* Transfer Transfer the data on all the output (usually right hand side) pins of this block to their connected pins over wires. Basically when a wire exists, it transfers data over it when on one side 'transfer' is invoked.

* Propagate transfer the data at the ouput pins of this block to the connected ones, and afterward call the functions of the connected blocks, and start the same procedure for each of these connected blocks. That starts a 'chain' of compute-->transfer to the next-->compute--> ... etc.

* Run Run is like propagate preceded by Eval, to also call the function of the block itself, when the input data hadn't been processed yet.

Suppose we use the editable info window for the Proc1 block to change to 55, then we can instead of pointing at the Proc1 block and using the menu to make the block evaluate this new input also use the 'eval' button in this window, which will run the function in the Proc1.bfunc entry once, always with the in and output variables as they are shown, there is no need to press return.

For programming procedures in tcl sense, and having an overview of all user and other library procedures except the standard, usually hidden tcl and tk libraries (which are big to show all the time, and aren't usually edited), the function 'procs_window' when called from for instance the console opens a window with a list of all user procedures in alphabetical order, which when double clicked can be edited and updated at will. Use 'save_procs2 filename.tcl" to save the changed set of routines after editing.

The procedure edit window

The whole list of tcl/tl procedures can be loaded in (I dare say) any tcl/tk version above the older 8.0p2 I use, and leads to bwise and all the routines and interactors I've shown being available.

You'll also need this image paper.gif in the same directory (shift click on it in the web browser to save the image, or use the right mouse button). The procs8.txt file is given text extension, because it is text, and because that way the web browser will display it easily, but if you download it, you should rename it to procs8.tcl, to be able to double click it.

Basically, after installing tcl/tk, which is simple enough, get the binaries (the programs) from sourceforge (or check altavista or another search engine for 'tcl/tk download' or something), it seems the scriptics site is not active now, though all the files are on the new site), which is I guess a file of a few megabytes, put it somewhere in a temp directory (e.g. c:\temp), double click it, when the installer program prompts for information simply go with the defaults, and in a few minutes installation on anything that computes with some decency and runs some windows 95 or later variation, the installation will normally be completed. Then look for (probably) the directory c:/tcltk or similar, go into c:/tcltk/bin, and click on the 'wish.exe' (maybe wish85.exe), to start the tcl/tk main program. Now use the menu to do 'source', or 'open file', and read in the above library of procedures. Then type 'cd directory' with directory as the place where the paper.gif image is located, and press return, now type 'bwise' followed by return, and the bwise window will be made.

All this can be done simpler, but that requires you edit the procedures file, and at the end add:

console show
Save the changed file, and double click it. That should take care of automatically starting the tcl/tk interpreter with the library loaded, and bwise started, ready for use.

For some with experience in tcl/tk, this is the script for typing my diary pages, which runs fine in the same interpreter with bwise active:

proc diarywin {} {    
   global diarynr
   toplevel .di 
   text .di.t -width 60 -height 10 -font {{MS Sans Serif} 12} 
   pack .di.t -side bottom -expand y -fill both 
   button -text "Generate page header" -command diarygen 
   button -text {Insert date heading} -command diarydate 
   button -text "Save Page" -command diarysave
   pack -expand n -fill x -side left 
   pack -expand n -fill x -side left 
   pack -expand n -fill x -side left 
   bind .di.t <F1> diarydate 
   bind .di.t <F2> { .di.t insert insert "<h4></h4>\n" }    
   bind .di.t <F8> { .di.t insert insert "<P>\n" }    
   bind .di.t <F9> { .di.t insert insert "<P>\n<pre>\n</pre>\n<P>\n" }    
   set diarynr 999
proc diarygen {} {
   global diarynr
# find next page number    
   foreach n [lsort -incr -dict [glob {[d,D]iary*.htm*} ]] {    
puts $n    
   set n [lindex [lsort -incr -dict [glob {[d,D]iary*.htm*} ]] end]    
   if {$n == {}} return    
   set n [string range $n [expr [ string first iary $n] +4 ] [ expr [ string first "." $n] -1] ]    
#  set f [open $n w]    
   puts "diary[expr $n+1].htm"    
# generate page    
   set t {}  
   set f [open dihead.txt r]  
   while {[eof $f] == 0} {  
      eval append t \"[gets $f]\n\"   
   close $f  
   .di.t insert 0.0 $t  
   set diarynr  [expr $n+1];
proc diarydate {} {    
# insert the date as level 3 html heading    
   .di.t insert insert "<h3>[clock format [clock seconds]]</h3>\n"    

proc diarysave {} {
   global diarynr;
   set f [open "diary$diarynr.htm" "w"]
   puts $f [.di.t get 0.0 end]
   close $f

console show

Basically, there are routines to make a window with text editor and to make the html header, and there are the bottons to drive it all, including that I made some function key bindings for some often used html tags.

The last lines call the main procedure and make sure that if this is a script that is double clicked in windows as an application, that the console window becomes also available.

Does it all come together? Well in fact, for those having been aware of some earlier work (much of this was already in various forms working even years ago), there are more interesting combinations here. For instance, there is nothing against storing data in the block info window into a database entry, possibly including graphics information, takes a few lines of programming (done it before).

Maybe worse, the pcom application, which can execute remote tcl commands and transfer files reliably, cna be used as a stub on one or more remote machines to do what unix, too does: remote execution of commands, and in this case, it is possible to also include the block diagram in the picture, and basically transfer any list around to any machine, and make any command happen anywhere where it is desired, also under the control of connected graphical blocks with list processing per block as the basis, that is pretty powerfull.

Currently, I can't do that stuff, but having a seperate machine for mpeg coding/decoding, another with linux to de csound real time rendering, yet another for some heavy graphics (maybe with mesa/opengl and some major screen or even projector), and one for comfortably controlling the whole lot with for instance bwise, doesn't sound bad. And one for physical modeling, with graphical feedback of the progress.

Or get a major workstation. Or ten, but then connected. Anyhow, in every case making things connect up and behave right is imperative, and ordering and connecting program parts, and driving them with good state and parameter feedback is important.

Note that the while bwise lib (minus the web server stuff which i stripped off for brevity) is under 80 kilobytes of text, which loads even on my old 486 in a split second, ready for use, this stuff is practical.