Blog Closed

This blog has moved to Github. This page will not be updated and is not open for comments. Please go to the new site for updated content.

Wednesday, May 28, 2008

Various Updates

It's been another long while since I updated here, although I should preface that by saying that I have been updating other blogs instead. My parrot-related blog has been getting daily updates since the GSoC project started, some of which are quite sizable. I've also been doing a little blogging for Wikibooks, because of some unfortunate drama that has unfolded over the whole logo selection thing.

I received a very nice email from a Mr. Ken Atwell from The MathWorks. He had read my MATLAB-related blog posts, and was interested to get some feedback. I'm absolutely flattered that he would want to hear what I have to say, and I'm absolutely amazed that people of such importance (relative to my interests anyway) seem to read my blog! This has really done two things for me:
  1. Renew my faith in the software industry. It's easy to believe that the big faceless software corporations care about their users when they are reading personal blogs and sending out kind emails. It's so easy to look at the price tag and say "well, Octave is free so I should use that instead". Features are nice too, but customer feedback and interaction are huge selling points for me. Unfortunately, now that I'm not a student anymore I can't possibly afford MATLAB, but that's besides the point.
  2. Instill in me a sense that blogs are far more powerful as a communications medium then I had previously supposed. I make some general suggestions about a piece of software on my nowhere unadvertised blog, and developers of that software actually read it and care! It's certainly enough to make me think twice before I try to say anything negative on here.
Here are some updates for some other projects that I had been working on:
  • Wikibooks Bot: I stopped with the original Tk-based development effort, and have been focusing instead on porting the application to Gtk2. It certainly looks much nicer now then it had before. Luckily, I had originally designed the software to make good use of MVC, even though at the time I had never heard that term before. There are a few areas where better demarcation is needed, but overall the process is easy and straightforward.
  • Octave for Parrot: Currently dead, I haven't had any time to work on it recently, and won't now that the GSoC program has started. This is something that I definitely want to work more on, when I have the time to do it.
  • Wikibooks book-designer: On hold for now. The script is relatively stable and I've gotten some good reviews. There was even an offer to translate it into italian for the it.wikibooks folks, but I need to do some work first to separate out the interface text from the code. That will have to wait, for now.
  • Various Wikibooks: I just started a book on [[Memory Management]], where I am going to summarize some of the things I've learned and am still learning about the garbage collector project. I also need to do some more update work on my [[Parrot Virtual Machine]] book, which I will try to find time for.
There are always a million other things up in the air as well, but this should serve as a good update for now.

Thursday, May 22, 2008

Ramping up and getting started

I haven't blogged in 4 days, which is weird because sometimes I feel like I want to blog multiple times each day. Of course, I know that such frequent updates can be really annoying (that is, it would be annoying if anybody actually read this blog), so I try to throttle it a little. Of course, now I've had a little bit of a dry spell, and I need to atone for that.

Google mailed out, to all of it's Summer of Code students, a book. That book, "Beautiful Code", contains a series of essays from famous programmers about what constitutes beautiful software. While this book was lambasted in one of the blogs I read regularly, I'm appreciative of the gift and will try to learn as much from it as I can.

Starting back in March, I was trying to get all my graduation-related paperwork in order for graduation this semester. As an aside, Temple's graduation ceremony was today, which means that I'm officially a graduate. There is a form on the graduate school's website called the "Graduation Plan". It was a checklist with degree requirements, blank lines where you write in the courses you took and the grades you got, and some lines for signatures. This form was provided as a download without any explanation, so I printed out a copy and went to inquire. I asked one professor, the department's graduate coordinator (and one of my thesis committee members) what the form was for. Do I need to fill this out, I asked. Who do I need to give this to?. He replied that I didn't need the form, it was book-keeping for my own records, and that I didn't need to have it signed or submitted. In April, I asked that same question again: Was he certain that I didn't need the form? Yes.

Yesterday I get a phone call at home from the professor: I do need the form signed and submitted, and it needs to be done ASAP. So, today I drive into the city with Geoff to sign it. Figures, doesn't it? One good side effect of this was that the form required me to manually calculate out my GPA, and I know now the exact number. I graduated magna cum laude, a GPA of 3.7. Part of me wants to take that number back to my old high school and rub it in a few faces. I need to go back to campus at least one more time, to pick up the bound copies of my thesis and distribute them to the necessary destinations. I dont know when they will be ready, I have to wait for a phonecall first.

I'm ramping up to get started on my GSoC project. I need to create an SVN branch where I can make my mistakes write my code without disturbing the rest of the project. I'm set up to write regular updates on various blogs:
  1. use.perl.org/~Whiteknight: I'm going to post regular updates, probably daily, on use.perl. I may post some of the minutia here on blogger too, I'm not sure how i'm going to run things. I haven't posted any to this blog yet, so maybe tonight I'll post a short introduction.
  2. parrotblog.org: This is the "official" blog for the parrot project, although it's not a very active forum. I plan to post regular updates, probably weekly to coincide with weekly checkins and status reports. I don't want to flood this blog though, so I might need to throttle that down if more people aren't posting to it more regularly.
  3. This blog: I dont want to get into all the technical minutia here, but you can bet i'm going to post parrot-related updates to this blog as well. Since I try to limit my posting to one per day here, however, I won't post much Parrot stuff here if I have other stuff to talk about.
With all the blogging I'm going to be doing (and this doesnt even count the wikibooks- and wikimedia-related blogs that I run), it will be a miracle if I get any work done this summer at all! No, it won't be a big deal because I can usually write up a blog entry pretty quick, and the magic of copy+paste should solve many problems.

I've also been in regular contact with the recruiter, and I'm hoping that it bears some fruit for me eventually. Sooner is better then later, I think.

Sunday, May 18, 2008

Weekend Wedding

Last night Dana, her family, and I went to her cousin's wedding. Because of a lot of intra-family drama, which I won't discuss in any detail here, I expected that the wedding was going to be a disaster. In some ways I was right, and in other ways I was not. Of course, it's not the purpose of this blog to criticize people's weddings, so I won't do that here either.

After the wedding, we went out to Chick-Fil-A, and we must have been some of the best-dressed people who ever went in there. A nice sandwich and some of those fries really hits the spot, though.

I'm here at Dana's house through tomorrow, staying an extra day to help Dana set up her passport. We booked our honeymoon yesterday morning, going to an all-inclusive resort in Mexico. We got a decent deal too, and came in under budget (which is refreshing!).

Parrot had a bug-a-thon yesterday which I wasn't able to participate in. Saturdays are always bad days for me to do anything programming-related. With the next release coming out on Tuesday, I probably won't be able to do any meaningful bug work. In penance, I'll work extra hard to get set up for my GSoC project.

I have a few other projects that I want to get working on too: First, I want to start porting my Wiki-bot program over to Gtk instead of Tk. I also want to try to expand the bot to do page moves, and possibly page deletions. I also want to try to do some work on my Octave port, if I can find the time. Time, of course, is always the limiting reagent.

Friday, May 16, 2008

Porting Perl/Tk to Gnome

I'm up and running on my new Ubuntu install, and I'm still glad that I made the switch. I've been playing with some of the software projects, Parrot builds and tests perfectly, and my two perl programs--Wikiperl and Expertperl--both run as well. However, I've discovered a nasty little secret: Perl/Tk programs look BAD on Gnome. I mean bad, really really bad. Embarassingly bad.

Perl/Tk looks decent on Win32, although there are always a few little issues that make them not look exactly right. Of course, for the simplicity of programming in Perl/Tk over C or C++ for instance (I never got big into VB, and I wanted something that was more portable then it) the small differences were negligible. I also can't speak for how Tk looks on KDE. But I can say that the look of these programs on Gnome is unacceptable and needs to change.

I've seen a few programs written in Python with Gtk, and I think I want to start porting some programs over to use Gtk instead of Tk. Of course, that's going to be a big effort on my part, and it's a huge hassle to get all the necessary sources and libraries to install Gtk2.pm. (I've been working on it on the side for a little while now). Of course, if it makes my programs look better and more modern all the effort will be worth it. Plus, it's something new to learn, and we all know that I love to learn!

Wednesday, May 14, 2008

Up and Running

I'm already up and running with my new Ubuntu install, I have all the capabilities that I used to have with Windows, and it's taken me less then 24 hours to get it all set up. I can't even set up a new Windows install that quickly if I want to have all the tools I need to get things running. I've got IRC, SVN, all my perl modules up and running, everything I need.

The few problems that I have had revolve around missing dependencies lists, and the constant need to prepend "sudo" to every operation I want to execute. I tried to install Tk and got a cryptic error about missing some xlib dependencies. Turns out I had to install a package called "libx11-dev", which is not even remotely obvious. I was lucky to find a mention of it in a forum post when I did a google search. I'm also having a little problem trying to decide between multiple programs that perform the same tasks: nedit, gedit, jedit, etc.

The few problems aside (and most of them are due to my own newness), I'm in love with the features of this system, and am happy I made the switch. Now, it's back to work as usual, and I have a lot of development projects that need my attention.

Tuesday, May 13, 2008

The Ubuntu Install

I'm going to keep this blog post as a running journal, editing it real-time as I install Ubuntu on my laptop. I spent a while looking through my laptop and backing up important files. Now that I'm recently certain this is done, I created the boot disk and restarted my computer.

Loading...
It's taking a while to load, but I'm impressed by the graphics already. A little eye candy can be very reassuring. "Look at me, I'm a high-quality computer program!".

Install Menu
It's asking me what language I speak again, this is the second time it asked. double-checking? Asks me what time zone I live in by showing me a cool auto-zooming map thing. It's nice, but the closest "city" that I can select is New York. Isn't it enough to have a map where the timezones light up as you mouse over them, and not have to select a city that isn't really "near" me? I don't know anything about keyboard hardware, but I'm still surprised when software can't tell whether I'm using a QWERTY or DVORAK keyboard.

Loading Again...
After entering my keyboard layout, the install starts "thinking". I know it's thinking because of the rotating mouse icons, but There isn't like a status box or progress bar here or anything to entertain me. I guess I'll have to turn around and watch TV, I think Law and Order is on.

Disk Partition
A sliding bar to set up the disk partition!?! This might be the best feature I've ever seen. Beat's having to enter in how many sectors and platters I want for each. I don't even know how big a sector is. It's cute that it gives me the option, but I want to delete Windows for good. 100% for Ubuntu.

And...
See a list of my settings, double check that everything is right, click the button to install. Now, we wait. By the way, now that I have an opportunity to take a look at it, the background artwork is pretty cool. To the artist: Kudos.

Still Waiting
I know, I know. I'm reformatting a 30Gb harddisk and installing an entire operating system. I just wish this process was quicker. Painless is nice, but if they could find some kind of "lightning" install in 10 minutes or less, that would really be something. Wait, the screen just went black! That means something must be happening, right?

No
No, the progress bar came back, although it's assuring me that there is "less than a minute remaining". It's been showing that message for at least two minutes now. It's okay, I like a little false hope every now and again. Plus, this install is still occuring remarkably quick, so I can't complain.

Configuring Hardware...
This isn't transformers, what's there to configure? I assume they are talking about "Configuring hardware drivers". It's a nit pick, but i'm that kind of person.

And Done.
The install is done, restarting, beginning my Ubuntu experience. Over all, this was very quick, painless, and easy. I'll probably post updates about using this system, but they will come later.

Preparing for the big update

I've made up my mind today, finally, about what to do to my computer. I had been planning to make the switch to Linux for some time now, but I've decided to move those plans ahead as quickly as possible. So, I plan to spend most of my day tomorrow doing the work on it.

Why so early? Well, there have been a lot of issues that I've run into recently, especially while working on Parrot. Today I got an error (one that i've been getting on occasion for a few days now) that several programs "Cannot load dynamic library MSVCR90.dll". This file, as most programmers should know is version 9.0 of Microsoft's Visual C Runtime. Basically, this is the DLL that implements all of LIBC on windows. Not being able to load this is a big problem for applications that are trying to use standard library functions.

I managed to locate this DLL, burried away in a subfolder of Microsoft Visual C Express Edition, the free version of Microsoft's compiler suite. I moved the DLL to the windows/system32 directory where I knew it would be seen by the system. I have to account for the possibility that i've ruined my PATH variable somewhere along the way. This "worked" in that the error I was previously getting disappeared and a longer, more angry, error was thrown in it's place: "R6034 An application has made an attempt to load the C runtime library incorrectly. Please contact the application's support team for more information". I want to point out that half the programs that throw this error message still execute perfectly.

I don't rule out that this could be some kind of a virus or something, which is all the more reason to switch to a platform that is, at the very least, targeted for viruses less frequently. "Why don;t you switch to Mac?" I can already hear some people asking. The reaason is simple: I don't like vendor lock-in under microsoft, I am certainly not upgrading that to the Orwellian version of the same practiced by Apple.

Tomorrow, then, is the big day. I've got the ISO image for the latest stable Ubuntu downloaded already, and am going to burn it to a disk tonight. I need to backup a lot of data on here too, because I want to avoid the hassle of supporting an NTFS partition on my drive. I have a few requirements of software that I need, but I suspect Ubuntu either has them all included already or has provided an easy way to have them downloaded.

Monday, May 12, 2008

News on Monday Morning

Sleep last night was lousy. I couldn't fall asleep at first because I felt very uncomfortable. I was cold and then hot and then cold again. As usual at Dana's house, the air was very dry. Eventually, we are going to break down and buy a damn humidifier, but yesterday was not that day. The weather last night was terrible too, that might have been the worst of it. There was a lot of wind, although not nearly as much rain as was expected. At least, i didn't hear the rain.

The power went off twice, and when the power cycles off then on, the TV in Dana's room turns on and play's static. At several points, the transformer outside Dana's window started shooting out sparks and making a noise like a paintball gun on automatic mode. I suggested somebody call Peco, but I fell asleep again before I found out if anybody actually did. I was worried about a downed powerline, but Dave took a walk around outside (and on the roof) before he left for work, and didn't seem to see anything. I didn't see anything myself before I left the house, although I didn't go so far as to climb up onto the roof.

I got several cool update emails this morning. First, my SVN access to Parrot has finally been granted. It turns out there was an integration problem between two different systems on the Perl.org servers that prevented my account from being added correctly. This error has now been fixed. I made my first commit this morning, an update to a documentation book that's severely outdated. They have a half-written book and no authors currently working on it? It's like they were expecting me. Of course, working on that book doesn't detract at all from my work on the [[Parrot Virtual Machine]] wikibook I've been working on diligently, and I've even gone so far as to explicitly dual license all my contributions to that book under Artistic v2.0 and GFDL licenses.

I also got an invitation this morning to become a member of http://www.parrotblog.org, a central group blog that's all about Parrot. I signed up for an account at http://use.perl.org too. Parrotblog is lower-volume, so I'll use that to post weekly updates. Use.perl.org is higher-volume and easier to get lost in, so I will probably post there daily. This brings the total number of blogs to which I am a contributor to five. If practice truly makes perfect, I'm going to be a fantastic writer before not-too-long.

Today and tomorrow are going to be spent on campus tieing up my last loose ends. I have to print out two new copies of my thesis titlepage and bibliography for the graduate school, and the title pages need to be signed by my advisor (at the very least) and my committee members too. If I can't find them all within these two days, it will be a shame but is not a show-stopper. I also have to tie up my last two final projects: a simulation of a 1970's era OFDM communications system, and a Verilog implementation of a 64-bit IFFT module. For the IFFT, I don't need to implement all the floating-point arithmetic functions or the CORDIC functions either (I can use pre-built modules for those), so it shouldn't be too much of a hassle. The OFDM system is idiosyncratic enough to make simulation and testing difficult. I expect to spend most of my time in the next two days working on OFDM.

Sunday, May 11, 2008

Weekender Update

It's sunday night, and for once I'm staying at dana's house for the night instead of going back to my own. My mother's uncle Bill and cousin Melanie (sp?) are staying at my house and, since we don't have two guest rooms, Melanie is staying in my room. My options, as layed out in a phone call from my mother, were to go home and sleep on the couch or to stay the night here at Dana's. Frankly, it's a no-brainer for me.

This weekend I finally got a new cellphone, the LG En-V 2. So far, my initial impressions of the phone are good. I'm glad to be finally entering the realm of ubiquitous mobile computing. One problem I had today was that Verizon charges 20$ to download a POP3 email reader program to the phone. I was going to get the program so I could access my GMail account, but I realized that I could read my gmail just fine using the included web browser. 20$ saved, I'm certainly not going to pay in order to do a second way something I can already do for free. I downloaded two ringtones, hopefully the last two I ever need.

I've got my forms filled out for the Google SoC, Dana is going to fax them at work tomorrow. Getting all the forms I needed (3 of them) printed was a huge hassle, as always. I probably don't need to say it again, but I absolutely hate printers. I've never seen a printer that was worth any money.

We're watching the transformers movie now on TV. Even though I own the movie, I've never taken the time to watch it. Shows how much free time I've had since Christmas. Hopefully, that will change starting....now.

Tomorrow, I'm heading down to the city to try to wrap up the last remnants of my school work. I've got to buy more paper and print out a few pages to satisfy the graduate school. Ideally, I want to get it all taken care of tomorrow or Tuesday. After that, schoo is over and it's smooth sailing.

Saturday, May 10, 2008

ScribeFire

I just picked up ScribeFire, a blogging extension for FireFox. This is my first post with it (so if it turns out lousy, we know who to blame). I'll probably be using this to do all my blogging from now on. I don't have time to blog about it more today, this is mostly a test to see if/how it works.

Friday, May 9, 2008

Getting into high gear with Wikibooks

The semester is over, basically, so I'm starting to have more free time on my hands then I have for the past few months. The job hunt is progressing steadily as well, but until I get a job nailed down, I can't just sit around and stare at the TV. Free time is a good thing because it lets me get back (at least temporarily) to doing the things that I love to do.

I got promoted yesterday to committer for the Parrot project although a bug with the SVN auth is preventing me from doing any work there. I've sent out emails to some people and hopefully it will get resolved soon. As soon as it goes through, I'm probably going to create a branch and doing some prepwork for this summer project. I want to get things out of the way early in case I do end up with a job before the summer is over and I need to devote less attention to it.

If i'm not going to be spending my free time working on Parrot, I'm going to spend it working on Wikibooks instead. This is also a good thing, since I've been a little neglectful of Wikibooks for a while. I'm in full swing, and blowing through some projects that I've wanted to work on for a while. Here are some of the projects on Wikibooks that I'm working on now:

Subject Pages

The subject pages have been my pet project for a long time now, and I think the prototyping stage is coming to a close. Yesterday I officially deprecated the first bookshelf, the engineering shelf, and redirected it to the fancy new [[Subject:Engineering]]. I'm certainly no artist or anything, but I'm proud of the work that has gone into it. I would like to start moving through the rest of the bookshelves this summer. If I even did one or two per week, that would be fantastic.

I also started drafting a page [[Wikibooks:Subject pages]] to try and explain what's going on with all this. The page is young and clearly lacking, but it's a start.

Categorization

Categorization has been a thorn in my side for some time now, and I have a number of reforms that I want to implement to start sorting everything out. Most categorization of books into subjects is performed through the {{Subject}} template, so changes made there will ripple and I won't need to look at every single book and page manually. Ideally, I would like to create a system where no user ever had to use a [[Category: ]] link directly. Instead, I would like to use a series of aptly-named templates to abstract away all the work and make things much easier. Along with that, I would like to write up some good javascripts that will make things easier still: "Select the book's subject from the box below". You wouldn't even need to remember what the templates or categories are called, you just select them from a drop-down box!

All the pages in the Category: namespace are messed up anyway. I want to reorganize them all and write guidelines for how they should be used in the future. The current method of "jam it in wherever it fits" really isn't working out too well, and we need a good unified plan to fix it all up again.

Tagging Books

Related to the two points above, I want to spend some time (probably with a bot) and try to tag a few books with templates that have been created recently. Some templates like {{Reading level}} or {{Prerequisite}} are invaluable for letting readers know at a glance what the level of the book is. There's nothing worse then getting into a book and realizing that you have no idea what is being said! Also, we've set up a bit of a hack where we are using category lists to try to count the number of books on the site. These use the alphabetical categories, so it's imperative that all books be categorized alphabetically. Lucky for us, we have a simple {{alphabetical}} template that we can use for this.

Writing Books

I do love to write, and I've been spending a lot of time working on my [[Parrot Virtual Machine]] book. It's a labor of love, and it's also a demonstration of my method of "learn by teaching". The more I write, the better an understanding I develop for myself. I've also got one book being voted on now to become featured: [[x86 Disassembly]]. I have a few others that are close and could become featured with a little bit of dedicated work.

Updating Policy

There is a lot of old policy stuff on on Wikibooks that is outdated or needs to be expanded. I want to spend some time on that s well. I also want to do some work on our help pages, our "welcome!" pages and templates, etc. Basically what I want to do is drop the barrier to entry, and make it a lot easier to get started at Wikibooks. This means that questions need better answers, resources need to be easier to find, templates need better names and easier syntax, etc. It's comprehensive and it's going to be difficult, but it's sorely needed. I created a template {{Update}} to mark pages that need to be updated, so I should be able to do this job in two passes (one to mark, one to update everything together).

Logo

Who could forget the logo? We really need to draw the whole logo issue to a close soon, and I am seriously upset about the way the Wikijunior logo discussion has been progressing. I suggested that we combine the two discussions, and derive a Wikijunior logo from the winning Wikibooks one. Some people didn't like that idea, but nobody really suggested an alternative to solve the problems. Time will tell on this.

Tuesday, May 6, 2008

MATLAB Wishlist, Redux

A user "Andrew" left a comment on my earlier "MATLAB Wishlist" post to alert me of a few changes to MATLAB that satisfied some of my requests. In response, I took some time to browse through the documentation, and here is what I came up with:
  • Object Orientation: MATLAB, at least as of r2008a (I don't know where a changelog might be, so I don't know when this feature was added) has better support of classes and objects through the classdef keyword. It may not be as robust an implementation as I've become accustomed to with the forward-thinking Perl 6 crowd, but it certainly satisfies my request.
  • Multithreading: MATLAB has implicit multithreading (or, as Parroteers would say, "auto-threading") that helps with things like vectorized operations. This is part of the implementation of a builtin function, and operates in a way that is invisible to the user. My version of MATLAB (r2006a) doesn't seem to support this, but r2008 does. Explicit multhreading, however, still isn't a part of basic M code as far as I can see. That doesn't mean it isn't there, it just means that I couldn't find it under a name that I would recognize. Also, I have noticed the addition of task scheduling, using a timer object and a callback function. If the current operating thread doesn't suspend when the timer fires that would, indeed, create a multithreading situation. It wouldn't take more then a little brainpower and a few extra hours in your day to create a nice multithread library, if that was the case.
I will note however, that there is a Parallel Computing Toolbox which does provide multithreading capabilities of some sort. From what I gather, you must interface directly with a specific scheduler object by passing in a callback, and then retrieve the callback results from the scheduler. This is certainly an interesting implementation, and would seem to satisfy a second wishlist request if you purchase the additional toolbox, that is.

Two of my other requests, namespacing and code embedding don't seem to have been satisfied yet, but they were relatively minor in comparison. Considering that MATLAB already ships with an installation of ActivePerl, it would seem possible for them to find some kind of way to mix it in to the ordinary M code scripts. When you reach a "START_PERL" tag in your code, the M code interpreter could create a sandbox, set up the variables, and pass the code to a Perl interpreter object. I can't be the only person who feels that the vast CPAN library system wouldn't be a boon to MATLAB development.

Either way, I think this is a good testiment to the use of high-quality proprietary software. Instead of waiting for me to get my fat butt in gear and writing these things myself, a team of professional developers have implemented the solution for me. MATLAB is the perfect example of a piece of software that I am willing to purchase, because it's high-quality and it's feature set is increased regularly. That doesn't mean that I'm not going to write my own port of it, it just means I like MATLAB too.

Monday, May 5, 2008

Summer Plans

Now that school is out of the way, more or less, I want to start divvying up my summer time. Here is a list of things I want to do this summer, basically not in order (although the first few are the most important).
  1. "Get a damn job." No explanation necessary here.
  2. Move in with my fiancee. Or, at the very least, move out of my parent's house.
  3. Implement the Parrot Garbage Collector for GSOC. This is something I want to do for my professional interest, if for no other reason. It's shaping up to be a cool project, and I haven't researched this much since the beginning of my thesis. I still need to fax in some tax forms and stuff like that to Google, but that shouldn't be a big deal.
  4. Work on the Wikibook "Parrot Virtual Machine", which I started a few weeks ago and have been working on intermittently. I haven't even scratched the tip of the iceburg on this one yet.
  5. Get cracking on my Octave clone for Parrot. I've got a lot of disjointed raw materials, and I need to cobble them all together into a coherent package. Of course, after my thesis I'm so tired of Octave/MATLAB, I might delay this one.
  6. Write up some additional books on related topics, like "Automatic Garbage Collection" and "Perl 6 Programming". I also want to try my hand at a childrens book called "Learn to Program". Part of me thinks that I want to use Perl 6 as the implementation language because it's dynamic (so kids don't need to worry about variable allocation and memory management), a lot of it's syntax is linguistically-based, and it's free. Plus, I'm just a fan of Perl. Of course, I can't write a children's book on Perl 6 until there is a stable and reliable download that kids can access without needing to be super-users.
  7. I want to put together an expert system shell for Parrot. This would allow us to do things like port Prolog or CLIPS. It would also allow us to implement a make routine in pure Parrot. Writing up some classes for productions would be trivial, and from there it's just implementing the Rete algorithm, a knowledge base script, and a few other supporting routines. Once I do this, I would love to try my hand at implementing Prolog on Parrot.
  8. In a similar AI vein, I think I would also like to set up some sort of neural net classes for Perl 6. I have a sneaking suspicion that it would be trivial to model a feedforward neural net as a linked list of closure arrays. This would be especially true if I could set up some auto-threaded list operations on them.
  9. Work more on my javascrip gadgets for Wikibooks. My goal is to really lower the bar to entry for new authors. If I can teach myself some PHP and get set up on the toolserver, I might be able to do some really good work on this front.
  10. Implement Verilog on Parrot. Considering the implicit concurrency between modules, and the almost complete lack of ordinary IO (unless I add in a bunch of nonstandard stuff), this might be a huge challenge.
This is just a rough list, and I'm sure some of the things here are going to get tossed out the window. Plus, once I get my "damn job", my free time to do the rest of this stuff might dwindle to nothing.

Some things are priceless

"The good paper": 50$
6 copies: 60$
Binding 4 copies: 80$
Having your thesis accepted by the graduate school: Priceless.

What's ironic is that my debit card is actually a mastercard. I dropped off two copies of my thesis today at the graduate school and four copies at the library for binding. I have all the signatures I need, and that should be it. I can never discount the possibility of an eleventh-hour phone call "we have a big problem", but barring such an event I'm primed for graduation.

Friday, May 2, 2008

Fare thee well, Temple

Today is an archetypical example of why I'm not going to miss Temple once I've graduated. I want to clarify up front that I'm not just another disgruntled student, I don't begrudge my time here. It is, however, time for me to leave.

The graduate school requires that the thesis be printed on paper that is at least 20lb, at least 25% cotton, and "White" in color. The graduate school website also informs me that the paper I need is available for purchase at the bookstore. So, with all due haste, I travel to the bookstore and buy the four last packs of paper. Sixty dollars, 400 sheets (200 sheets fewer then I needed, but it's a good start). The paper is called "Cranes Thesis Paper". The weight is 24 lbs, the paper is 100% cotton, and the color is listed as "White". After purchasing the paper, I go back across campus to my office, and load up the graduate school website again to start reading about the next steps in my journey. Upon reading, I notice a footnote that says "Cranes White 100% cotton paper is NOT an acceptable shade of white." Good.

I travel back down to the bookstore to return the paper. "Is there anything wrong with it?" the girl behind the counter asks. "Yes", I reply, "it's not the right paper, the graduate school says it's not acceptable for printing a thesis." The cashier is a bit bewildered by this, and points out to me (as if I haven't read it already) the words "thesis paper" on the front of the box. Apparently, it must be a different use of the word "thesis". I'm then informed that the bookstore doesn't have an alternative, the only kind of paper that it carries, it's entire selection, is Cranes thesis paper. "There might be some at the Barnes & Nobel", she suggests.

For people who aren't familiar with Temple, there are two bookstores. The first is located in the basement of the student center, and the second is a Temple-affiliated Barnes & Nobel on the other side of broad street. The selection of books at the B&N is smaller then the normal bookstore, and it focuses mostly on law books. It also doesn't have the correct paper, and I've wasted 30 more minutes in the pursuit.

I need 6 copies of my thesis printed on good paper. At the time of writing this, I have 3 prepared. I was unable, for lack of "diamond dollars" and good paper to print the rest here. I will have to do it sometime this weekend at Kinkos or something. Two copies, unbound, need to go to the graduate school by Monday May fifth. I was hoping to have them submitted today, but I don't have all the necessary signatures. I can't get the signatures either: while all my professors are known to be on campus today, none of them have been in their offices, or anywhere in plain sight for that matter. I also can't get back in my office now since the floor is being mopped and the cleaning staff have locked me out. That means I can't get my laptop or my bag (so I can't leave early to hit kinkos) and I can't work on any of my final projects. Lucky for me I still have rudimentary blog access.