I started today by helping four people netreg again. Apparently they kept trying to register on Wireless-Central, and used the MAC address of their LAN instead of their Wireless card. For the rest of the day, I took the role of teaching assistant, and played with Scratch during my off-time. Don asked me to do a demo of Scratch later this week, so I'm going to try to learn it to some degree of competence by then. Around 3:45, I put down the Scratch and started to work on an Alice world for a library demo.
I started this morning by trying to fix Elaine's computer. I managed to get the internet working, as well as Alice (from the DOS prompt), but I couldn't get the start menu to show up. Moreover, the person's computer seemed to be filled with spyware, so I suggested that she try to ask Duke OIT to re-image it. Then, I took an hour to go through constructing the Input/Output with the class. I think I got at least 90% of the class to follow me, possibly more, although some who had already figured it out worked wiith their own, so I guess they were working on their own ALice worlds or surfing the web. Then, I helped Jenna upload a new tutorial on making a timer. I gave another very brief talk about using library functions, and then left at around 11:40. I returned to the LSRC at 3:00. Deborah gave me feedback on my Object-level variables tutorial, and I am working on revising it in response to her comments.I started working around 9:30 today. I helped a couple of people and worked on fixing up my Class-level variables tutorial, based on Deborah's comments. I am still of the opinion that my productivity (at developing materials) declines more than my coworkers when I am in the LSRC rather than the office. Unfortunately, although I've never seen the demand for us so high that four people can't handle it, Ruthie seems to feel that I need to stop running to the office, so I'm staying in the room. I finished fixing up my Class-level variables tutorial around 11:30, and posted it on the main repository page. In the afternoon, I spent some time working our friend the linux user, and we discovered another bug in Alice. Apparently, if you move to something, and then orient it to the same thing, rotation fails to achieve the desired effect unless you move some tiny distance away first. In the afternoon I experimented a bit more with Alice, and Don about object-specific events. As we were talking about those, we also got into a discussion of the mysterious method "while the world is running" which some of the teachers seemed to have discovered but couldn't explain how they did. We both did some Google searching, and eventually I found a forum post where it was described that you could right-click on the event "When the world starts" and click "change to" and then select "while the world is running." This discovery, coupled with object-specific events, could allow us to create objects that animate themselves by default, thereby allowing us to create a far more powerful library of intelligent objects, since object-specific events can be tied to class-level methods, which use class-level functions. I also spent some time playing with scratch. I think I understand how most of the functions work now. Also, I figured out how to layer in scratch - it's the order that you add things, and you can always delete and re-import to repair that order. When I got home later, I played some more, and found that, if you have two grounds in the world which are 1000 meters apart, it's very hard for the camera to accidentally see one from the other. I think it is feasible for scene-building.
I spent most of the morning working on the tutorial for ground, and assisting people, as well as showing the gravity demo to the people who came from the state department. I then spent an hour and a half with Suzanne Maclean and Joe Mack, explaining some of the more advanced features of Alice, such as the separate coordinate system and the vehicle property, the use of libraries (gravity and vector motion), and the zip nature of Alice files. I continued this discussion after the presentations after lunch. Since they were interesting in teaching programming in general, and particularly the transition to Java, I also showed them the CS4 Fang page, since that was how I had first learned programming. I explained that course materials from the Duke CS department were freely available to the public. I "finished" the ground tutorial. Over the course of making that tutorial, I discovered two things. First of all, the Alice default atmosphere color and default ambient light color is very specific, and one has to convert decimal values to RGB scale to figure out how to replicate the color. Second, it feels cumbersome to expect new users of Alice or novice programmers to figure out how to make the world dark. To address these two problems, I created an extra library that contains those original colors, as well as methods to darken and brighten the world. I have also created a template world with my super-ground and my library already built in, thereby allowing an easier change of scene.
I started this morning by uploading two more worlds, with the library I discussed yesterday, and linking to them from my tutorial on superground, which is available directly here. I also spent some time looking at camera lense angles, and observed that dummies do not preserve camera lense angles. I watched Professor Slater's presentation fo audacity and Alice 3.0. I also brainstormed some ideas for future tutorials, and material to develop next week. Based on what I've seen and assisted with over the course of this workshop, I am increasingly convinced that video tutorials would be the best way to go. However, the process I used previously to create the first demo of a video tutorial was quite labor-intensive, and not very high efficiency. I think I might attempt to do voice recording, unless I find a new way to mark movies as I record them, so I can easily find where to add captions. I also worked with Michael Notel on perfecting the motion of his world. I showed him how to add a parameter to the walk method that I had previously helped him on, and use it to calibrate the world speed. I think I might try to make a new video this afternoon (if I have enough time) on events. Okay, I guess I'm going to document my superground better now instead of doing the video. I am going to add a duration parameter to my world libraries. Unfortunately, I will probably not be getting to this today, since Brian gave me the bright idea of trying to import texture maps independently of Alice, using the zip method, which could potentially be much faster. After about 4 hours of trying every concieveable comparison of all the files in the unzipped version, I finally figured out where the problem was. Apparently, once we had changed the XML, it was simply an issue of ZIP file structure. There was an extra layer of folders causing the problem. I had been clicking on the large folder and clicking "add to zip" when I should have opened the folder and selected all the items, and then select, "add to zip." The XML modifications were twofold - first a "child" had to be added, and then add an extra element under texture maps. This is a relatively efficient way to batch import texture maps which are exported from other Alice objects. Further investigation could lead to a way to batch import texture maps that are NOT exported.