true stories from the interpreter


Unscheduled Outage

It's been an interesting week. At lot of good progress with a few set backs (mostly internet connects failing).

Last Friday while tinkering with some of the code, I seemed to have resolved a problem that I was having a few weeks ago. Now it is possible for a client on one machine to connect to a session on another machine. It's also possible for a teacher to control a session on their computer, but to actually serve it from another computer. This will be useful for a school that is on a shared network. While it's technically possible, you're not supposed to run two Pyro Name Servers on the same network segment. Now the Pyro servers can run on a specified machine, and teachers can serve their sessions on that machine. Very cool. So I had to add a few things to adjust for these changes.

Saturday, some guys (and a girl) and I had a hack-a-thon / sprint in on of the labs on campus. I was there from 8 in the morning to about 6:30 in the evening. I worked more on the new changes due to Friday's breakthrough. I tried to find a good way to run an "Amenity Server", but what I came up with was awkward. I also worked on the importing and exporting of activity sequences. For exporting there is a dialog with a list of all the sequences that user owns, and they can check which ones to export. They can also give a name to save it as, but the default is amenity_sequences. It creates the file as a .asa (Amenity Sequence Archive) on the user's desktop. The file is really just a tgz archive. The import dialog is basically the same. They choose an archive to import, and there is a list view that displays all the sequences in the archive chosen and whether or not a sequence by that name already exists. The user selects which ones to import and just click the import button.

Sunday, I took the day off to take Wendy to see "The Break Up" (good movie, just leave about 10 minutes before the end) and eat at the Texas Road House. Came home to find my apartment's internet was on the fritz... Again.

Monday morning the internet was still down so I took a trip to campus and set up shop in the lab. I found a Daemonizer class in Pyro used to create the functionality in pyro-nsd and pyro-esd, and was able to subclass it to make "amenity-server". This is good because now a user can just call amenity-server start, amenity-server stop, etc. and all of the Pyro stuff is taken care of for them. But it most cases the users won't have to actually use amenity-server directly, unless it is the case I mentioned earlier that there is a central machine which all users host off of. Someone will have to start amenity-server. I think that it may be possible to put it in /etc/init.d but I will have to test this. But for the most part, if a user is hosting from their computer, the client will start the server for them.

Around noon on Monday the campus network decided that I didn't need to access anything off of campus... So defeated I went home. I had no internet connection, I was a man without a country. So I worked on things that didn't require a connection. I set up gconf schemas and tested those. Cleaned up the session monitor interfaces.

Tuesday and Wednesday were pretty much the same. I started making packages for the project. I have different setup.py files and different MANIFEST files for each project. I moved the amenity package out of the education package, because I think it's better if amenity just uses the base package and is not inside of the base package. There's going to be a separate amenity-teacher and amenity-student package. This way a machine with just the student package will be missing utilities that only the teacher will need. I've made a pyeducation and amenity-teacher package. I'll be making the amenity-student package and bug fixing all three for the next few days. I set up a mimetype for .asa files and if you double click a .asa file it will automatically open in the amenity-teacher importer window.

I did get my connection back sometime on Wednesday. So I've been testing the changes I've made. Everything is looking good. I don't think my changes are ready to commit, but I may be able to commit them by tonight.

Today, I'm going to keep on working on bugfixing and making packages. I also need to add a preference window for the clients. That shouldn't take very long.

Tomorrow is much of the same.

Saturday is another sprint! Same place from 9:00 to 5:00.

I'm not sure what's happening on Sunday yet. Hopefully I'll have a lot of progress to report.

Here is my timeline from my proposal, in a more timeline-ish style.
  • May 22 -- Start Amenity (well, there was a delay with the accepting and everything)
  • June 10-17 -- Finish models and remote objects. Start work GTK interfaces.
  • July 1-7 -- Finish GTK interfaces (essentially finish Amenity), Start working on Pike.
  • August 1-7 -- Finish quiz library and models. Start work on GTK interfaces.
  • August 22 -- Finish GTK interfaces (essentially finish Pike). SoC is over on this date.
So, I seem to be on track at this time. Back to work so that it will stay that way.



Inching Along

I've been able to keep my progress with Amenity steady. I extremely happy (and lucky) to not have come across a huge obstacle yet (knock on wood). My latest commit to the devel-main branch contains improvements to the session monitor view and the newly coded session student view.

The session monitor view shows a tree of activities and an activity view. The activity rows expand to show which students are currently connected to it. This information is updated dynamically through Pyro's Event Service. Clicking on any of the activity rows will display information for the activity.

The session student view shows a tree of students and an information view. The student rows expand to show a list of the activities in the session. Clicking on one of these activities will show information for that activity for that student. For example, clicking on a Vote Activity row for a student will display the activity status (not completed, in progress, or completed) and the vote of the student (if it is completed).

I also reworked the way event information is published through the Pyro Event Service. This removed some complexity in the student client code. I should also be able to remove some unnecessary methods from some of the classes thanks these changes.

Here's a short list of things I'll be working on over the next two days:
  • Connecting Pyro events to methods to dynamically update the session info views.
  • Cleaning up how some of the information is displayed in some of the session info views.
  • Handling what happens when a student finishes all activities in the session. Currently nothing happens.
The list is short for two reasons. One reason is because I cannot really remember everything left to do off the top of my head, and the other is because I'm slowly running out of things to do. This list shouldn't take too long to finish, but I should be able to add things to it as I test the program.

Tomorrow is another full day of working followed by a Jazz concert at the campus theater, a trip to Hershey's ice cream store, and a round of Apples to Apples with some friends.

Saturday is going to be an all day hack-a-thon in the Undergraduate Research Lab on campus (8 am - 7 pm) followed by a trip to Highland Coffees.

I'm taking Sunday off to take Wendy to dinner and a movie.

Next week is the first evaluation of Summer of Code. During the week I'll continue working towards finishing Amenity.



One Week Until Midsummer Evaluation

It took a bit longer to clean up my code than expected, but that could be because I spent a lot of time visiting with family this weekend. But my latest commit has the cleaned up code with a few bug fixes here and there.

As I mentioned before, this week is about finishing features. Towards the end of the week, I may start playing around with creating .deb files, but we'll see how far I get along first.

Off to work for now.



Scheduled Outage

I'm a little surprised by how much progress I've made in the past three weeks. If I can keep up this pace, I may be able to finish Amenity ahead of schedule.

I am going home this weekend to visit family, which means I won't have wireless access for my notebook. I am going to spend some of my time at home cleaning up my code (some of it is a little messy from testing and quick bug fixing) and adding more documentation to the modules. So after committing those changes Sunday night, my code should look a lot better.

Next week is all about feature completion. I want to finish as much as I can next week. I am going to try to get some guys and gals together for a Hack-a-thon on next Saturday and sprint to finish as much as I can before the first evaluation.

If this plan works out, I can spend the evaluation week putting the finishing touches on Amenity (almost a week earlier than I planned) and start working on Pike.

I've also noticed that my posts end rather abruptly. I need some kind of catch phrase to go out on or something like that.



Amenity Progress Report

Progress has been slower as of late. Saturday morning I discovered a flaw in my logic that was causing Python to Seg Fault! While it is not unheard of, it is rare that I actually get a Seg Fault in Python. I spent my work time Saturday and Sunday reworking my logic and I resolved that issue.

Monday was spent migrating the dialogs used in the programs to their own module and testing/cleaning up the the changes from Saturday and Sunday.

Tuesday I started adding student views for each activity. The ChatStudentView is complete and working! Two or more students can log into the session and chat via a ChatActivity. I just need to add in a few chat announcement calls here and there and it should be good to go.

Today I am going to work on making the rest of the StudentViews funcational.


Amenity Progress Report

In the past few days I've made a lot of progress with Amenity's Teacher Interface.

Through the interface you can now,
  • Create, edit, and delete class rosters
  • Create, edit, copy, and delete activity sequences
  • Create, start, and stop sessions
This involved writing two Gnome Druids (several hundred lines of Python). I tried to use Glade to create the Druids, but there's something about Python's Glade support. It doesn't seem to use gnome.ui to create the Druid, and I was unable to put the Edubuntu logo on the edge pages of the Druid it created. Creating the Druid's without Glade wasn't a big deal, as it gave me a chance to do some heavy PyGTK coding.

I've been working a lot this week, anywhere from 8-12 hours a day. I'll probably work half days tomorrow (big party tomorrow night) and Sunday. Next, I'm going to start working on the Student Interface so that I can see if the session connections work correctly.


SoC - Progress Report - 3 Weeks Before First Evaluation

Now I have my code in a bzr repository (bazaar.launchpad.net/~ryan.rousseau/py-education/devel-main if you have a LP account). Also, there are new mockups for the Sequence and Quiz editors on their respective wiki entries.

Over the past few days I've also realized some limitations of Pyro. Including one which I spent two days trying to get around. The problem has to do with Event Subscribers that aren't on the same machine as the Event Server. I've found out through the Pyro mailing list that there is a way to solve the problem, but it may cost me a few days of work. After talking to Jerome, we decided it would be best to target this release to run on the LTSP setup, and that solving this problem would be a bonus or something for after SoC.

The current plan is to continue work on Amenity as planned. It's three weeks until the midterm evaluation for SoC, which a lot of people on the SoC list have pointed out is actually a little earlier than halfway through the program. I plan on having Amenity done by the first week in July, so by the 26th of June, I should have the majority of the Amenity finished.

Tomorrow, I hope to get a lot more of the internal code and models done, so that I can start working on the interface starting Wednesday or Thursday.

Also, tomorrow is the infamous 6.6.06 (spooky) and I will be going to see The Omen. I know it will probably be horrible, but it couldn't be any worse than The DaVinci Code.