# Older blog entries for dto (starting at number 62)

Good mood today... last night I typed up a quick proof for a problem the students hadn't been able to figure out, and sent them a PDF. Tutored some more between 10-12 (mostly we went over how to construct an NFA from a right-linear grammar, which is a neat procedure) and then came home. I'm going to try to get my art project done today, and I want to do some Octal work as well.

Last night's show went very well. Twenty minutes before I went on, Ariane showed up. Ten minutes before I went on, Ari pulled out her microphone and suggested we do another spontaneous abstract-girl-vocals accompaniment, like we had done in NYC last june. Steve hooked us up and we were ready to go. I'd say it went pretty well, the audience seemed to have a good time, and Ari's vocal improvisations were fabulous.

I even made thirty bucks,but my parking ticket will cost half of that :-(. Anyway I'm tutoring later on, will work on Octal after that.

What an incredibly long day. I awoke at 7:15 to leave for school, and then had that calculus exam. Between 10:20 and 12:30 I tutored, then after Physics class we had our robotics project meeting. I decided to build a base much like the tank-style one in the Mindstorms Constructopedia (but with a better processor and sensor system.) I'm most likely going to be doing a subsumption-style architecture... nerves, signals, responses etc.

From 5PM to 7:30 I tutored in theory of computation... we went over the correspondence between NFA and regular expressions, conversion of NFA to DFA, lambda transitions, etc etc etc. What a long process. Many of the students had inadequate discrete maths background, so if we are talking about how the transition function of a DFA is going to map {states}x{alphabet} --> {states} and they don't know what the cartesian product of sets is... eeh. I hear some of them are on their third try with this course! I can't blame them, really. I have been to several state schools here, and Discrete Maths is not taught very well. Plus, this is a 7AM course that combines day and night students, and some of the night people haven't had discrete math in years!

I'm not really sure what to do. From what they tell me, their understanding is helped by the explanations and examples, so maybe it will be enough. To get them through. Otherwise they don't graduate :-( the course is required.

I have a 3-day weekend coming up. I can't wait to attack Octal and get some more coding done. There will be a developer's release this weekend, including plugin-testing interactive bits and the revised/finished API.

I'm basically over that cold I had. I spent almost all of today studying for tomorrow's exam---I will be at school from 8:30AM - 7PM!! For those last 2 hours I will be tutoring Computability Theory students, but besides that and the robotics meeting I must complete that Java assignment and also my Visual Design project for this week :-(. Gonna be a big crunch, probably worse than today. I'm planning to write the program at school, type it in at home and debug. I don't know what I'm going to do about the art assignment---I may have to leave it for the nighttime and stay up late.

Better remind myself to pick up some 3M Spray adhesive and my Rx in the evening.

I've been sick this week... I finally got that bug that was going around seemingly everywhere. My family all got it, all the Computer Science faculty got it, and now me :-(.

I'm getting over it though. I have so much to do!

Ari and I watched Silence of the Lambs last night. It's our favorite movie, and we wanted to get up to speed in preparation for the release of the sequel next week. Pretty exciting!

I don't know what it is about printing out code to reread it and make notes with a pencil. I find it clears my head, lets me see the code in a new light. Lots of fun. I also printed out Owen Taylor's GTK drawing tutorial, as it shows how to do backing stores to prevent flicker. I'll probably take these pages all to bed tonight to read.

I've been using Nautilus for about 2 days now. Pretty schweet. This app has a lot of potential. Now that I have kernel 2.4 running, my IDE chipset can run in the much faster DMA mode. My machine is noticeably a bit more peppy.

Getting Better All The Time

I rearranged the control_box API. The previous setup was causing impossible-to-find bugs... the storage was managed by engine_view, and there are just too many combinations of machine deletion / machine creation / slot reuse, too many events to get the engine viewer to deal with it correctly itself.

My solution was to make the control box totally manage its own storage, to the point where, when deleted, it nulls out the pointer that points to that storage. In addition, cb_create does nothing in the event that you try to create two control boxes for the same machine. When the control_box is either closed or when its machine is deleted, the GTK resources and memory are freed and the pointer is zeroed out. So there is never a dangling pointer around, despite the different kinds of events that can cause a box to get destroyed.

I guess the idea is that control_box really knows best when it should be destroyed, so why make another object understand it?

Octal 0.8b release thoughts

I have a few more changes to make to OCTAL's API before releasing it. They are all small, and if I can get the docs done I will release them on Sunday (tomorrow.) I'm thinking of revamping the use of "machine::state", and making it more like GTK+'s use of "user data". I'd rather just pass it as the last parameter to all the instance functions, and have them do a quickie cast like my_struct *s = user_data;.

Here is my master list of things coming in 0.8b:

• Adopt the GTK-style naming convention for all the enumeration constants.
• Draft of the machine writer's guidelines---about naming conventions, ensuring archival file formats, ideas on a possible OXAN repository...
• Hopefully some preview code for multiple widget control types in control_box. I would like to have at least trigger buttons work before releasing. I will try to get some consistent handling of creating different widget types, perhaps with a function accepting the OxWidget number and returning a gtk_widget* with its signals and data already connected. Perhaps the names for this data could always be the same, and a single callback can handle all widget types (much like the current one retrieves some data items from the widget's adjustment, widgets without adjustments could benefit from the same thing.)
• Version and Is_Beta fields in machine types
• Rename to Octal SDK or something
• stubs/docs for the wavetable extension

I fixed the bug (for now) that was causing incorrect text rendering in engine_view.c. Not setting the GC clip rectangle makes it go away. I wonder why... aren't I supposed to do this?

I made sure the GUI blocks until it recieves a ready message from the core.

I added some ideas to mvcpac.txt. I now have in mind a simple mechanism for propagating core events to multiple viewers, and it will be very simple to replace the working-prototype forwarding mechanism with this one.

Now that I think of it, the bandwidth problem is solved. As long as we keep track of which machines are being observed, we can have the core send param updates thru the pipes only so often. Perhaps on a rotating basis. It's only being done to give an idea of what is going on inside the core thread, it's not supposed to have perfect accuracy.

As for play-position... I may be able to just use a global variable and lock it with a mutex. Or if the user thread never actually updates this integer, I may be able to skip the locking.

I gave the Octal project page at GNU a little bit of a makeover and added a new link or two.

Have no idea what I'm doing about the show coming up... I presume I will be ready in time. :-) I have several weeks, so I am not that stressed. There is some kind of web-ad at c-fom's page. Nice, top billing :-) even if it is alphabetical...

We had our first meeting about the Mobile Robotics senior independent study. Went very well, I'm even considering writing a kind of flow-network editor for doing subsumption architectures on the handyboard. The UI certainly wouldn't be very hard--I just did something MORE complex and it was not difficult. The only tricky part would be converting the flow networks into inputs for some kind of C code. I think this would be hard, because by default this thing runs a weird dialect of C where pointers and arrays aren't interchangeable and I don't think it even has function pointers. In other words, it is basically Pascal77. Sucks.

There is a GCC port to the Motorola 6811 and people do compiled programs for it, so perhaps I will check this out.

I'm listening to an excerpt from the live show in NYC jan 2000. Wow... has it really been a year since then? :-)

23 Jan 2001 (updated 23 Jan 2001 at 08:40 UTC) »

School's going well so far. Earlier today I worked on Octal's pattern system, doing a partial rewrite of pattern.c. Now it has the ability to add mixing tracks to the machines. I am only weeks away from a beta test.

In other news, I heard that the source code to Buzz and Buzz2 were lost sometime last year. No backups??? A similar blunder destroyed the code to Ultima VII.

A lot of small things to do now...

• Finish mixer opcodes
• Adapt analyze_digraph() for AUX connections
• add long machine names / info in cboxes
• implement file format
• block GUI until registry is installed
• multiple-reciever event propagation
• amp/pan matrices
• standard mechanism for status... trace()?
• prototype tracker widget
• install kernel 2.4 and GNU-DDD :-)

53 older entries...