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, April 30, 2008

Thesis: In Memoriam

I just finished my final defense presentation. It went more quickly then I was hoping, but I know that I always tend to speak too quickly during these things. I was shooting for about 30 minutes, it took about 20-25. The questions I received were good, and had the unfortunate effect of highlighting issues that I should have covered better in the presentation. Hindsight, as they say, is always 20/20.

Friday is going to be a day of bureaucracy. I have to print up several copies of my thesis report on nice paper (nice = expensive). Two unbound copies go to the graduate school, two bound copies go to the department, one of which specifically goes to my adviser. One bound copy I keep for myself. With each copy being about 90 pages long, that's 450 sheets of good white paper that I need to have available, at least.

The graduate school needs two copies, as a I mentioned, although they are going to review the formatting and kick it back to me if it doesnt meet their specifications. It should, of course, but in the unlikely event that they don't like it I will get it back and have to fix it. I may only submit one copy to them on friday for checking, and submit the second when I know it's been accepted. May 5th is the last day to hand it in to them if I want to get my diploma in May.

I also need to get all my source code put together, cleaned up, documented, and verified. I need to get a zip file to my advisor, something that I also hope to have done by friday. There are one or two bugs still that I want to try to iron out before I submit it to him, however, bugs that I should be able to resolve by tonight.

Besides these few loose ends, this basically marks the end of my thesis and the end of my master's degree. I have no finals this year, just a two final projects of varying complexity. Those should not take too much of my time, in comparison.

A Very Busy Day

It's still early, but the day so far is shaping up to be a very busy one. I just got off the phone with Delphine, we were discussing the USA chapters issue. She's a very charming and helpful woman, and it was very cool to actually speak to her (as opposed to emails or IRC, which lose a lot of the charm). Maybe it's because I've never received an international phone call before, but I've never seen a phone number with so many digits.

I went up and spoke to my advisor about my impending presentation. We did a dry run through of it, and fixed the few remaining errors that were there. The presentation is a little short by design, I'm expecting to take no longer then 30 minutes. The problem with this particular presentation is that there are so many issues that could be discussed, and going into any amount of detail is going to require a large amount of background explanations, digressions, and ultimately a waste of time. I intend to keep it short and sweet, and to fill in the blanks when it's time to field questions.

It's 11 now, the presentation is in an hour and a half. I want to try to find some kind of lunch food that is not drippy, spilly, stainy, sloppy or messy. Here on campus, that's a bigger challenge then you might realize.

Gmail also isn't loading up right now, which is odd. It says "your Gmail account is currently experiencing errors. You won’t be able to use your account while these errors last, but don’t worry, your account data and messages are safe." What does that mean? My Google account is clearly not in trouble since Google Documents, Google Reader and Blogger are all running fine. In presentations like this, I typically email a backup copy of my presentation to myself in case there is some kind of strange hardware failure between the time I leave my office and the time I load the presentation onto the presentation computer. It's never happened yet, but the insurance is good. However, since gmail is being funky, I might have to dust off my old hotmail account, which has done little except attract spam and dust for months now. Every time I thought that I could finally close out and forget my Hotmail account for good, I get one stray important email that I would not have gotten otherwise. I guess today I'm glad that I have it as a backup.

After the thesis presentation, I've got my last communications class. We're going to discuss more about the final project, a simulation of a 1970's era OFDM system. With all the thesis-related stuff to be doing, I haven't done as much work on this project as I should have, but it's not due for two more weeks and so I have plenty of time to get down to hard labor.

Wednesday, April 23, 2008

New Software!

Took a few minutes today, during my lunch break, to search for some newer versions of some of the free software that I use.

Inkscape upgraded from version 0.45 to 0.46, and the modest number increase doesn't do justice to the amazing enhancements that have been added. The 3D polygon tool that was added is a great addition, although it's clear from a cursory use of it that a little bit more polish is required on it. The new brush tool is interesting too. Enhancements to the user interface alone (including dockable dialog boxes) are worth the download. Anybody using an older version of Inkscape should definitely upgrade ASAP.

My version of Pidgin was way out of date, I was using 2.1.1, and they are now on 2.4.1. I don't want to say that this represents a "big" jump, but every little bit helps. Since this is a product that I use every day, small improvements can have a large net impact on the overall software experience. Of course, it's another issue entirely as to whether I actually employ any of the new features or not.

I haven't yet, but I'm probably going to upgrade to ActivePerl 5.10.0 sometime tonight. I may take a quick look at Strawberry Perl instead, however. It's not that I don't like ActiveState, I actually love them and would love to work for them if I had the opportunity (I haven't put in a resume because a relocation to Vancouver would be very difficult for Dana and I right now). However, I would like to try Strawberry Perl out since I hear so much about it and because it's supposed to offer better integration with CPAN. If you're a Perl user, you'll know that better integration with CPAN is key.

I talked with Jason a little bit today, working out some of the details about my impending move to Linux. I have a long history of using Fedora, I've used it since version 4 or 5. However, in the interests of expanding my horizons, I'm thinking about using Ubuntu. Maybe I'm just a bandwagon jumper, that's entirely possible. However, I've been out of the Linux-loop for so long, and it's such a fast-moving community, that I can't possibly have a reasonable and informed preference anymore. If Ubuntu doesn't end up floating my boat, I always have Fedora as a good standby. Both distros apparently have new versions due out soon, so by the time I make the switch there should be fancy new versions to jump in to.

What I am most hesitant about in all of this is not leaving Windows behind. I've been a loyal Windows user since 3.1, and have no particular outstanding complaints, although I refuse to upgrade to Vista. I've also been a relatively loyal user of Microsoft Office for my school applications, although I'm in mid-migration to OpenOffice. Again, it's not that I'm anti-microsoft, but I'm a cash-strapped student and I can't afford to update from my Office 2000. What I am going to miss most is Notepad++, my all-time favorite text editor. Luckily, support for Notepad++ in Wine is rated "Platinum", which I assume is a good thing.

On a related note, my mother and her sisters are talking about chipping in to buy my grandfather a new laptop. His computer is set up down in the basement, and in their old age my grandparents can't make the trip as regularly as they might like. A laptop (a wireless one to boot) would solve that problem in a jiff. Also, once he gets a laptop, I might get back the desktop that I lent him, which was in pretty decent condition. I definitely want to set up a server for backing up data and for operating bots.

I'll have to go through and figure out if there is any other software that is in need of upgrading. I don't like to stay on the bleeding edge, but the occasional update can usually add plenty of cool new features, and features are always appreciated.

Tuesday, April 22, 2008

All things code

Haven't blogged in a little while, feel like it's high-time for an update. I can do this piece-wise:
  1. I got accepted in to the Google Summer of Code program! I'm going to be working on a new garbage collector for Parrot. I've never done a garbage collector before, or any kind of advanced memory management system for that matter, so this is bound to be a learning experience. I'll probably be writing about this pretty regularly, and things have only gotten started here, so I won't write too much about it now.
  2. I had a phone interview with GE yesterday. I'm excited because it was my first interview in a long while, and I feel like it went well. Of course, you never know if you did poorly until several months go by with no more calls or emails.
  3. I've been doing some work on a new book designing tool for Wikibooks. It's not ready for public release yet (although I have gotten one or two people to beta test it for me). I'm sure I'll talk more about this tool, called my "Visual Book Designer" within the next few days. Maybe I'll even post up some pictures of the tool in operation! It's a really cool outlining tool that is a far cry better then my previous book design tool.
  4. I rearranged my room the other day, and I took the cheap wooden frame out from under my futon. The frame was only about 2-3 inches tall, but without it my parents are concerned that I'm "just sleeping on the floor". When I move out, I'm going to throw that old futon away.
That's it for now, I'm sure I'll have more to post eventually.

Friday, April 18, 2008

Matrices

I did some work last night on my matrix class for Octave. It's going along pretty well although much of my code is pretty sloppy. I stayed up pretty late last night working on it, and the result is not the best looking nor most consistent code I've ever written.

I've got basic elements in place. I can create new matrices of any size. I can determine when a matrix is a vector (and I can separate between row and column vectors), I can determine when a matrix is a scalar. I can add two matrices, multiply, subtract. I can negate a matrix, transpose it, or scalar multiply it. I can test two matrices for equality.

The next big operation to support is the determinant. However, this is composed of smaller operations which I would need to implement first. Also, there are more then one way to do it:
  1. The classic is Laplacian decomposition. This would be relatively easy to implement. I would need to create a function to compute minors, which in turn would require me to compute cofactors. This would be recursive, and would be inefficient for large matrices.
  2. A better idea would be LU decomposition. This would require me to write up gaussian row operation functions, row reduction algorithms, and a simple trace.
  3. Also good would be QR decomposition, which would provide a good head start for eigen decomposition later on. This would require an implementation using either gram-schmidt orthonormalization, householder reflections, or givens rotations. Gram-schmidt would probably not be too difficult since I already have vector dot-products (but no vector 2-norms yet).
Either option two or 3 would be good, and the sub-steps would set me up nicely for later work on eigen decomposition or matrix inversion. Of course, we are getting to the point where I may want to do the rest of the development work using Octave and not PIR as I have been doing. Between me and that goal, however, is integrating this new matrix class into the octave parser.

I'm not planning to do any of the rest of this today, or even next week because of the final cleanup work that I need to do on my thesis source code. I have to clean some of the code up (add a lot of comments which are sorely needed), and work out a few kinks. Ideally, this won't take me too too long

Monday, April 14, 2008

Success!

I have, just now, ironed out the last major bug in my processor model. The feedback paths are working, port input and output are working, everything is going well. I haven't robustly tested everything, and my assembler is still discombobulated, but I'm thrilled with my progress. I want to fix the bugs in my assembler tonight, so that I can write actual code (instead of having to hand-code instructions into binary as I have been doing). After that, it's smooth sailing from here till the finish line.

Sunday, April 13, 2008

Results!

Back from a nice long weekend, although I don't want to take the time to talk about that too much right now. I just want to post a sort notice that I'm receiving preliminary output results from my processor. The "out" instruction (which outputs two 16-bit values, "addr" and "data", to the output ports) is working perfectly. This is the first test of something that "works", and I'm happy about it.

I still haven't completely worked out the mechanics of the writeback path. This means that all instructions which require me to store a value to a register (arithmetic instructions, "mov" instructions, etc) aren't working. At least, I don't think they are working because I don't want to waste time yet to try them. Starting tomorrow, I'm going to try to get this vital pathway working so that I can get some real instructions and programs operational.

Because I've been making many changes to things, my assembler isn't working right now. I've had to change around the word formats and bit orders and everything, so my old assembler code doesn't work. At the moment, I'm converting opcodes to binary by hand. For short 1-instruction test "programs" this isn't a problem. However, once I get things working and start using more complex programs, I am going to want to get that fully operational.

Anyway, just a short update before I head off to bed. I'll probably post more tomorrow, after I've bashed my head against it for a while.

Friday, April 11, 2008

Compiles!

i'm happy to say that my system now compiles and simulates error free. This means that I've got all the data type and rate issues ironed out and all the feedback paths properly initialized. It's earlier in the day then I was expecting to be at this point.

The next step, of course, is to try to load some software onto my little chip and see if it performs like it should. This could either go very well or--as I'm expecting--very poorly. Barring worst case scenarios, I'm on track for Monday.

It is time.

This is it, the final moments. Yesterday I put in the finishing touches to my design: better handling of jump conditions, better propagation of control signals, a Verilog-implemented main control unit (and a nifty Perl program to generate it automatically). I've done some small unit testing here and there, but the implementation has been changing so rapidly that it's hard to keep up with small-scale testing. Well, today is the day. I got the last few details worked out in my design, everything is in place, and I clicked the "Simulate" button on the complete processor model for the first time.

Errors.

This is to be expected. I had a computer science teacher a while back who, while generally being old and incompetent, taught me one important fact: It never works the first time. Even for professionals, it never works the first time. I'm sure I could have figured out that rule experimentally over time, but when I was young and impressionable this was a revelation. Back then, my getting errors and needing to spend long hours debugging wasn't a fault with me, it was an immutable fact of the universe.

Fast forward several years, and that immutable fact hasn't changed one iota. Except now, instead of programming in Java with a friendly and helpful IDE, I'm programming in a mutant combination of Verilog, MATLAB, and Perl. Not only do I have to get the program logic correct, but I have to worry about hardware-related minutia: bus sizes, timing, data rates, resource allocation. Programmers think all the time about power-of-two sizes: 8-bit, 16-bit, 32-bit. I've got busses that are 1 bit, 17 bit, 22 bit.

Combine this with the fact that the compile time is excrutiatingly long on my laptop (which means it would be far worse on my geriatric "work computer" that the school provided), and this morning is a painful one indeed. Hopefully I can get most of the kinks worked out before the end of the day.

Thursday, April 10, 2008

Nice day today

It's a beautiful day outside, and I spent much of my day wishing I had been in more seasonal attire. Of course, part of that is because my office doesn't have any variant of climate control. When asked to fix that, the maintenance people said that the problem was "probably with the thermostat, or some kind of wiring problem". Needless to say, it still hasn't been fixed.

One of my students today had the wonderfully erudite insight: "It's hot as shit out today. We should cancel class so we can go outside and look at hot girls". We will ignore for a moment the course language and the inappropriate topic. We will also ignore, for now, the larger social commentary involving the lack of women in engineering programs, or the glaring example of how young men objectify young women. Beyond these things was the truth: it was indeed a nice day today, and we were all wishing we could skip class to go out and enjoy it.

I didn't cancel class, and we as a group did not go outside to enjoy the sun or look at the "hot girls". My youthful exuberance not withstanding, I was aware of the harsh reality: There was work to be done, and all that work needed to be done indoors. When I cam home today, instead of changing into pajamas or other lounge wear as per usual, I put on a pair of breezy athletic shorts. They're just as comfortable for lounging in, but without the unnecessary thermal retention. I may still spend a few minutes out in the afternoon sun while I still have the opportunity, but today is a day of work and tonight is shaping up to be no better.

Wednesday, April 9, 2008

Short Update

Hasn't been long, has it? I'm basically finished my model now (I said it wouldn't take long), except for the main control unit. Of all the parts of the processor, this needs to be written in pure Verilog. That is why I've been putting it off until the bitter end. Luckily, once I implement the first main control unit and get all the verilog sorted out and broken into templates, I can write a MATLAB script to generate them automatically. Ideally, if I can even remember how to write Verilog properly at this point, I should be done with it tonight. I can start testing and assembly language programming by tomorrow or Friday.

Progress Tonight

I left my Laptop's power cord at home today, the first time ever that I've done that. I do have a work computer, but I'm used to "double-fisting" my computers. Not having a mouse in my left hand made me feel a little bit naked.

As any prudent student should do, I make multiple regular backup copies of my thesis. I maintain copies here on my home computer, and one copy each on both of the HDDs in my work computer. I used to make a fourth copy on a networked "My Backpack" storage location too, but the interface for that changed and I can't access it using my normal backup script. 3 should be enough, I assume.

Without my laptop, I was able to do some work on my thesis (especially my abstract, which is a big load off my shoulders). Now that I'm home, however, the real work can start in earnest.

I'm working my way through the processor model from left to right, basically. I've built the instruction fetch, instruction decode, register unit, and a basic ALU. I'm only supporting a few instructions right now, but I'll be able to expand this basic skeleton rapidly. Most of the changes happen in the ALU if I want to add more instructions, and I've made it very scalable. Work is going very quickly (as I had hoped and anticipated) because it's all graphical block-based design. Plus, I have a lot of these components half-built already, and I know the designs like the back of my hand. So much of the work was in the interface anyway, the rest of the design is just plugging in blocks where then need to go.

Crunch Time

It's officially crunch time in Andrew-Land. I got back the most recent draft of my thesis from my advisor this morning, I have my final instructions, and it's time to wrap everything up.

Today I'm working on my final abstract, and I need to schedule a room to have my defense presentation. That will probably happen on the 30th. My adviser wants to see "results" by Monday, which means my free time has dropped to zero between now and then. What I need to do:
  1. Write the final abstract for my thesis (by Friday)
  2. Finalize my hardware design (it's mostly complete) and get it working in the simulator.
  3. Write software in my home-brew assembly language to run on the "hardware" in the simulator. My adviser has given me an integer-valued DSP filter function to implement. Besides the complexities of data buffering and port I/O, this shouldn't be too hard.
  4. Benchmark the processor, produce tables, graphs.
  5. Write about all these things, and fill in the missing sections in the back of my paper, including appendices.
Some other things that I need to do, but which probably don't need to be in on Monday include:
  1. Write my title page, and all additional front matter for my final paper.
  2. Final fixes to formatting, renumber all images and tables (my advisor prefers a different numbering method then I've been using currently)
  3. Rework all images to be more consistent. Convert images to bmp instead of png, because of rendering problems.
  4. Rearrange some material, move tables to appendices, add code and block diagrams to the paper.
And, after the dust settles, I should have a Masters Degree.

Monday, April 7, 2008

Networking Disaster!

It's monday, and I have two projects due on Wednesday using a simulation program named SystemVue. SystemVue is a very nice communications simulator which has been acquired by Agilent (formerly a division of HP). It's a decent program, and it does what it does reasonably well.

My point here isn't to discuss the SystemVue program itself, that doesn't really matter to me now. I have the two projects due on wednesday (and a multi-part project due a week from then), all of which use it. I am reliant on SystemVue to get this work done.

Which is why the news I've just received is so devastating. SystemVue uses a networked license. The department server (appropriately named "Electro") is down this morning, which means the networked license isn't available, which means that none of the computers in the entire department can run SystemVue. There are free student versions of the software available, but they are so heavily limited and constrained that they can't be used to do what I need them to do.

I don't know much about the situation. A friend of mine mentioned, in regards to Electro, that there was a "smell of burning plastic", "massive loss of data", "unable to recover", "no backup", etc. I can't confirm any of these things, but I shudder to think about what the worst case scenario might be for me now.

Sunday, April 6, 2008

Sunday, Lazy Sunday

I'm spending the day at Dana's house. Her, her mother, and her sister are at a bridal shower for another hour or so, and I'm home alone here with the dogs. As a side effect, I've been pretty well productive for the time, so it's not a complete waste.

On a side note, I'm typing this blog post up in FF 2, not FF 3 Beta 5, which I've been using regularly. FF 3 Beta 5 seems to have some kind of cookie error that is preventing me from loading blogger on it. I'll explore that a little bit more and possibly submit a bug report about it if I find anything useful.

We made chicken salad today, again. We made it at my house yesterday morning, and subsequently ate the whole bowl of it for lunch. So, to satisfy everybody's appetite for the stuff, I made up another batch for Dana's family last night. Rave reviews all around. At least I know that if things don't go well in my engineering/programming career, my plan B is to start a restaurant or something where I can sell chicken salad all day. There's probably some money in it.

I worked a little on my Wikibot program, and it's in a good condition where I can start using it to help with my woes on the Linear Algebra wikibook. Considering all the massive changes I've made since friday, it might be high-time I released a new version, a Beta 2 or something. I've already got plans in the works for the next few features I want to add, but I feel like I've gotten a lot of this stuff out of my system for now and can go back to working on other things.


That's it for today, but I suspect there are things that I wanted to mention but am forgetting now. It doesnt matter, I can post an update tonight or tomorrow if I need to.

Friday, April 4, 2008

It's Friday

I'm heading over to the hospital in a little bit because my mom is having a short procedure done and she wants somebody responsible to be there to talk to the surgeon after it's finished. Talking to the surgeon is the only real way to get information about her status in a reasonable time frame. As can be expected, I'm taking my laptop and plan to get a little bit of work done here and there.

I uploaded the Beta 1 version of my Wikibooks editing bot to Slashdot today. This version is miles above the previous version of it. It has a lot of new features, better error handling and recovery, better integration, etc. You can actually log in and out without having to restart the whole program! I was planning to make an installer, but I haven't yet, so I just decided to forget about the installer entirely. It's really not that big a deal, especially not for the first beta, and so I will get around to doing it later. It took me about 15 minutes to package the files and upload them, and most of that was because I needed to look up the documentation on how to upload the files to sourceforge. I just don't make updates regularly enough to have the procedure memorized yet.

Working on uploading the release renewed my interest in the project. I'm going to spend a little bit of time working on a new feature that allows transform queueing. It's a feature that I've been wishing for recently, and maybe now is the time to get it working. We will see how the day goes.

I spent some time yesterday adding some documentation to my Octave implementation. I'm taking a short break from that project while I try to get some ideas together in my head about how to proceed from here. Soon, I would like to get it in a public repository, such as the Parrot SVN, or on sourceforge. Maybe being public will help to draw some attention to it, and I could use all the help I can get. I mailed in my CLA to the Perl Foundation the other day, and I'm probably going to request a commit bit next week.

I posted a patch yesterday for a fix to the PIR grammar. The patch was very short and involved adding a single small line to the Bison grammar file. I'm not an expert on Bison, but I think the solution was very straight-forward and easy to implement. Nobody has commented on it yet, however, so who knows.

I want to work more on my Parrot book, and I think I'm getting ready to start writing my Perl 6 book as well. I kicked around the idea of applying for a TPF grant to work on them, but I'm not sure yet if I want to make that kind of commitment to these projects. The Parrot book especially has been difficult so far because things keep changing so quickly, and it's hard to really nail down what is and is not "current".

Dana is coming out to my place tonight. We're heading out to her place tomorrow afternoon for dinner. She has a bridal shower on Sunday to go to, so I might be home from that early. There isn't a lot of school work or thesis work that I can do right now from home, so I'll probably be doing more Parrot or Perl work.

Speaking of school work, I have two projects that I've been working on but that need to be completed by wednesday. I've already got a third project assigned due next wednesday. On top of that I have a late homework assignment I need to hand in ASAP. So, my week is going to be pretty busy. I'm also getting back the most recent draft of my thesis (110 pages!) from my advisor on Monday, and that should take me into the final stretch for graduation.

Wednesday, April 2, 2008

Ghosts of the past

As much as it may seem like it, the people that I graduated highschool with haven't all disappeared into the dark "real world". Every now and again I'll see one of them, a ghost from my past. I see these people on the train, mostly. It's the artery that brings people from my little suburb into the heart of the city.

There are a lot of people who were my friends in highschool, who I haven't spoken to since. I guess "friend" is a lose term, one with many gradations. The people who I would call my true "friends" are a far less numerous bunch then the people who send me friend invites on facebook. I'm generally not interested in the whole facebook pokemon-esque "gotta catch them all" mentality. Sometimes I wonder why I have an account there at all. I only check it when I get an email from them to alert me that somebody has done something that affects me. I try not to put too much personal information in there since I hear so many horror stories about privacy issues on there.

I see people I used to know, or who I think I used to know, on the train sometimes. I can't always remember names, I've never been too good with names anyway. I never waive or say anything. I really don't want to talk, or "catch up", or get reaquainted. The problem is one of expectations: I'm not the same person as I used to be, and you never have enough time in a 5 minute conversation to explain all the things that have changed in so many years. I may look the same, my hair is basically how I kept it in highschool (although generally neater), my wardrobe isn't substantially different either. Of course, my lot in life hasn't improved a whole lot in the 6 years since I graduated. I'm still a full-time student. I don't have a job or a family. I do have a fiance, however, and I'm very lucky in that respect.

I dont really know why I wrote this rambling post, it was probably unnecessary. I'm probably only explaining this to myself. Maybe there's nothing to explain anyway.

Tuesday, April 1, 2008

Octave Data

I played around a little bit today with my Octave implementation, and I'm happy to say that I had a major breakthrough and was able to get functions working, mostly. Now, for instance, the following code works as expected:
function [c] = circumference(r)
c = 2 * pi() * r;
end

x = circumference(5)

Which will dutifully print out the expected result:
x =

31.4159

Despite the square brackets in the function declaration, I haven't gotten matrices up and running yet, although they are basically the next thing on the list. I've created a basic "OctaveData" super class, and am going to create a series of sub-classes for the various data items (matrices, scalars, cell arrays). The superclass will contain a flag for the data type, so that functions can determine the types of input arguments (probably through the isa() function) and act accordingly.

When an identifier is found, we can search a list for it. There will be several lists, one for top-level declarations, one for the current lexical scope, and one for variables declared as "global". I search the list for the given variable, and if it is found, I can return the value. In the case of a matrix, the following call:
y = x(1, 2)

Will return the element from column 1, row 2 of matrix x. However, if no variables are found in any of the lists, a dispatch method is called to find and call a function by that name. If x in our example above is a function, the dispatch method will return the result of function x with the arguments 1 and 2. The benefit to having a dispatch method is that I can centralize the search function and the wrap-the-return-values-into-a-matrix functionality in the same place, and only have to deal with it once.

I have some basic loop structures that I stole from Squaak, and I need to tweak them a little bit so they match the Octave syntax more closely. With loops, subroutines, and aggregate data types, I will basically be in a position to start reproducing standard library functions. I'm pretty impressed with the progress I've been making, especially considering how little time I have on a regular basis to work on it.

Wikicouncil

A resolution has gone to the WMF board about the creation of a wikicouncil. The wikicouncil is supposed to be a representative group from the WMF community that will somehow support and supplement the board and the various committees in making decisions, especially those that affect the projects. An open call for nominations or applications was put out for people to form a preliminary council. The preliminary council is tasked with laying the foundation for the "real" council, and setting the specifics like how the members are selected, the size and composition of the council, etc.

Anyway, long story short, I submitted my name for consideration, and am now apparently on the list of members for this preliminary council. I saw a post from Danny Wool about these events which, in addition to his usual cynicism, included my name. It's fun to see your name written on somebody else's blog! I won't begrudge him his cynicism, I've developed a little bit of my own in my time as a Wikimedian. I felt like it was worth a response, at least a roundabout one, and so I started writing a comment. Half way though, I decided the comment was the size of a regular blog post, and so here I am now.

When I applied to be part of the wikicouncil, I was doing it in the interests of diversity. Being ignored and marginalized is something that members of the sister projects feel (whether rightfully or wrongfully) consistently, if only peripherally. Maybe it's the same way that non-english speakers feel about all the apparent anglo-centrism that's part of the foundation. I can't speak for anybody else, so it's just a guess. My hope was to get at least one sister project member onto this council, and it looks like that hope was fulfilled. Of the 9 preliminary council members, 7 of them are from Wikipedia, or identify with it strongly. 1 From Wikibooks, 1 commons, 1 meta, 2 Wikisource. This is the kind of bias that I expected and frankly, based on server statistics, it's probably generous for us. That we got two non-wikipedians on the council is good enough for me. There is also some language diversity here, so I won't find fault in that either.

If the crowd of people isn't a diverse one, i would venture to guess it's because of a small pool of volunteers. After all, the proposal was only sent to foundation-l, that I'm aware of, and was not translated into any other languages. This limits the pool of potential applicants immediately. However, having a large number of languages represented here may not be the most productive idea anyway. The purpose of this council is to create rules about the "real" council, and good communication between us is probably going to be a key component in that. Ideally, we won't have much work to do anyway, and we can turn the reins over to the true council quickly.

The goal of this preliminary council, at least as far as I understand it, is to lay the necessary groundwork to install a permanent council. Once we lay out a purpose, sizes and term limits and composition and whatever, I think that we can rest. I mean, our job isn't to actually do anything, except to decide on a group of people who do have to do something. Really, I view this whole thing as very much of a non-issue.

I've been outspoken enough about my desire for more openness and more communication, so I'll do my best to ensure that this doesn't turn into a secretive little cabal of power mongers as some conspiracy theorists might surmise. I can understand the need to exercise some discretion, of course, but this wikicouncil is supposed to be about the community and I would like to see that be more of a rule then a suggestion. I'm not here to stir the pot (I can't stress enough that I don't expect that we will be doing anything of any importance beyond simple logistics), and I'm generally not interested in being a part of the real council once it gets started. I'm definitely not in this for some kind of vague "power" that this council might provide to it's members.

It's my hope that this council does all the wonderful and lofty things that people say it will, and I would like to help be a part of that if I can. I anticipate that mine will be a small part, however.