Talked to my advisor yesterday (and by "talked", I mean "exchanged emails") and I think that I'm on schedule to be done the thesis within two weeks. That schedule gives me an additional two weeks of emergency holy-crap-there-are-errors-to-debug-last-minute time, in case I need it. Murphy's Law seems to indicate that I will. The unforseen variable at this point is using the Xilinx System Generator to synthesize the processor models, and have them loaded onto the FPGA hardware. I know that the process should work, in theory, but I don't know if the system will work properly on a model that is so large and complex as my processors.
I got back the first 40 pages of my first draft from my advisor today, covered in the expected red ink. I asked him what he thought of the project, if I was going in the right direction, and whether I needed to make an emergency change of course between now and the deadline. He said "Frankly, you're doing too much work". That's refreshing to hear, I suppose, I was trying to be a little bit ambitious. He said that instead of creating three separate processor models, that I should focus my energies and only create one. That's fine, I'm mostly finished with the first one anyway, and I can mention my efforts on the other two models in my conclusion.
I've been speaking with Jerry Gay in preparation for applying to the Google Summer of Code. He's the contact for the Parrot-related projects, so we've been talking a lot. I should have put in the application yesterday, but I got stopped up over a few details. I hope to have it in by today or tomorrow at the latest. I think that I'm settled on trying to implement the new tricolor incremental garbage collector for Parrot, although I found out yesterday from Jerry that previous GSOC projects have tried to implement other Garbage collectors as well, although I don't think previous projects tried to implement the same kind of GC as I am interested in. It surprises me that something so esoteric as a garbage collector would seem to draw so much attention from new contributors, you would think people would want to work on something more sexy like a new language or a scheme of tree optimizations or something.
Speaking of new languages, my octave clone (which I am currently calling "poctave", for simplicity) is coming along well. I haven't had as much time recently as I would have liked to really get this project moving, but the ease of using the compiler tools is helping to make my time more productive. I've got basic statements up and running, my grammar is about 75% complete, depending on all the features that I try to implement, and I'm laying the ground work for some of the necessary matrix and cell-array PMCs for it. There is a long way to go before i get anything that's both usable and resembles Octave syntax, but I'm making progress. Once I get the basics done, I really want to move on to my wishlist of features to add to it. Eventually, I want to try and get the language added to the Parrot SVN respository, so that maybe some more people can help work on it. Maybe I should create a project for it on sourceforge instead.
I created my book today on Parrot: [[Parrot Virtual Machine]]. This book is still in those precious early infancy moments, so it's not much to look at yet. However, I'm trying to be very comprehensive in my coverage, and hopefully it will turn into a great resource. Once I get a little bit more ground work done, I want to announce it on the Parrot mailing list or somewhere else, and try to attract more contributors that way. The book will be, I think, a great resource because a lot of Parrot documentation at the moment is fragmented, incomplete or ad hoc ("check the source, the source is the documentation"). Pulling together stuff from existing documentation and lessons that i've learned the hard way will create an excellent resource, I think. It won't be long till I start preparing for the Perl 6 book that I want to write as well.