PVector – Initial Project Plan

What is Processing.js?

Well to sum it up in one line, Processing.js is a Javascript port from the original Processing program written in Java.  That, however, doesn’t specify what Processing is.  Here is an excerpt from the main Processing page:

Processing is an open source programming language and environment for people who want to program images, animation, and interactions. It is used by students, artists, designers, researchers, and hobbyists for learning, prototyping, and production. It is created to teach fundamentals of computer programming within a visual context and to serve as a software sketchbook and professional production tool. Processing is an alternative to proprietary software tools in the same domain.

To learn more about the Processing tool, click here.  Processing.js is trying to solve the problem of  having load a Java applet to use the tool.  Instead, with the help of Javascript and CSS, Processing.js will be available almost instantly within most browsers.

I have chosen this project mainly because of the exposure this could get once finished.  It is part of the revolutionary movement that Mozilla and Google are trying to achieve that, through the internet, personal applications aren’t necessarily needed anymore.  Everything can be done through a browser, over the net.  Secondly, I’m very interested (my game developer side is) in the WebGL process and I believe this would be a good place to start immersing myself in it.

How can you keep up with my work?

The main way to see my work progress is through this blog.  I will be posting the ins and outs, the goods and bads, the  small and big problems and accomplishments right here in this very blog.  There is also a wiki page setup on the CDOT wiki specifically set up for Processing.js.  There’s also the list of things to be implemented on the main Mozilla wiki, which can be found by clicking here.  The list has more specific details on the items being implemented and needing to be implemented.  I may also make a specific page on this blog for more details.

What is your timeline for this project?

I’ve thought of a main release schedule and a backup release schedule.  This all depends on what I can accomplish by my 0.1 release.  I’ve picked PVector class, which can be found by clicking here, for my main focus on my 0.1 release.  Now, the way my release schedule differs is how difficult this initial release will be.  If it’s simpler than anticipated, I will pick several different functions to complete for my 0.2 and 0.3 released.  If it’s harder than anticipated, my next few releases will be completing the different methods for the classes.

0.1 Release (Oct 19, 2009)
Main release schedule:  Finish the PVector object
Backup release schedule:  Finish the PVector constructors

0.2 Release (Nov 16, 2009)
Main release schedule:  Finish other functions for Processing.js
Backup release schedule:  Finish several PVector methods

0.3 Release (Dec 7, 2009)
Main release schedule:  Finish more functions for Processing.js
Backup release schedule:  Finish the PVector object

What do you need to learn for each of your releases?

The main thing that I would need to learn for this is Javascript, and learn the processes of a functional language.  The main process that I need to learn this would be to just jump right in and play with code.  Learning by immersion is the best way to learn different languages and coding styles.

Collaboration and Contribution

With the help of David Humphrey and Al MacDonald, I hope to achieve my goals.  I also have a team of other students working with me and their information can be found on our Processing.js wiki paged linked above.  I will also include their blogs on the sidebar to the right for easier access.  If you wish to help or participate in the creation of this program, feel free to leave a comment and some contact details.  Or get on IRC on the Mozilla server in channel #processing.js.

What barriers stand in your way?

The biggest barrier would be learning a new language and way of coding.  One thing I’m uncertain of is the difficulty of the scope of my goals.  The only way to find out is to dive right in and do some work.  Overcoming both problems would be easily solved with lots of hardwork and research.

Firefox Build cont.

Alright, when I left off yesterday, I was having trouble with the libnotify library.  Dave was kind enough to give me direction on how to continue with my build.  He provided me with the library name I needed to install.  I was able to continue by putting in the following command:

yum install libnotify-devel

And I present to you my first problem solved:


My second problem was easier to figure out as the error gave me direction:


So I just obeyed the instructions given to me by the error and I downloaded the wireless-tools-devel package:


My last problem was harder to understand.  The build had been running for a while and was displaying some seemingly unintelligible things, if you’re not used to it.  For a while, I thought I found the error (which is highlighted in the following):



It wasn’t until I received advice from Dave on Moznet IRC that I was able to move forward again with my build.  He said that I haven’t seen the error yet and what I was looking at was not the error.  Here’s an excerpt of what he said that made me chuckle:

[15:51] <@humph> nope, you’re missing it
[15:51] <@humph> it’s higher
[15:52] <@humph> get on your ladder and climb higher in that window

He was right, of course.  My terminal cached only 512 lines so the error was getting cut off and I wasn’t able to see it.  I increased the line count to something along the line of 9000 lines.  Lo-and-behold, I found the error:


At first, I thought it was my fault because I, admittedly, didn’t check tinderbox the night I cloned from the repository.  I let Dave know and he told me to give it a try using the hg pull -u command.  I did that and rebuilt.  Still no luck.  Fortunately, Ted had some free time and was able to chime in.  He mentioned bug 517566 which was the same problem I was having with the webGLContext.h and webGLContext.cpp.  Ted mentions that I would need to install the mesa-libGL-devel package.  Looking at the comments in the submitted bug, it seems that the problem is on its way to getting fixed.  At least, I saw the following header check being thrown around that will be helpful to people move on from the obstacle I encountered:

AC_MSG_ERROR([Can't find header GL/glx.h for WebGL (install mesa-common-dev (Ubuntu) or mesa-libGL-devel (Fedora));])

So after resolving that problem, I was able to continue my build and eventually finish it.  It took roughly about two hours altogether after I was able to get it continuously going (granted it probably would have been ten times faster had I allocated more hardware resources to my virtual machine).  I was able to get Firefox to run but not without kinks:


Did I succeed in my build?

AC_MSG_ERROR([Can't find header GL/glx.h for WebGL (install mesa-common-dev (Ubuntu) or mesa-libGL-devel (Fedora));])

Firefox Build

To start this build, I downloaded VirtualBox.  I figured I wouldn’t use Linux as an OS too frequently; mostly just to build stuff for this course.  So, I didn’t want to install it as a separate partition on my HD.  It was mentioned in class that a build on Linux on a virtual machine was ten times faster than the build on a Windows non-virtual machine.  I decided that this would be the perfect setup for me.  So, I installed the virtual machine and put Fedora on it as the operating system.  No major hiccups there.

I began the Mercurial Exercise and was able to finish that without any problems as well.  I tried doing the Simple Firefox Build next.  I came upon my first problem.  It said the yum was being used by another application.  I figured out that it was because I decided to update Fedora before I tried the build.  So, my next move was to wait for the update to finish.  At that point, I started this blog.

Next, the Firefox build begins.

sudo yum groupinstall 'Development Tools' 'Development Libraries' 'GNOME Software Development'
sudo yum install mercurial autoconf213

Those first two commands gave promising results… as can be seen in the following screenshots.



Then, came grabbing the source and updating the Make and then using it…

hg clone http://hg.mozilla.org/mozilla-central/
cd mozilla-central

echo '. $topsrcdir/browser/config/mozconfig' > mozconfig
echo 'mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir-ff-release' >> mozconfig
echo 'mk_add_options MOZ_MAKE_FLAGS="-j4"' >> mozconfig

make -f client.mk

At that point, I encountered a problem.  It’s on the following photo:


I’ve even highlighted what I think the problem is… I’m going to leave this blog post up tonight and maybe I’ll have some helpful comments tomorrow when I pick this back up.  If not, I’m going on a search!

Catching Up

So I’ve fallen behind on some of my work.   I’ve been busy with some other school projects.  This means the list I’ve whittled down last week has grown considerably large again.

  • Consider creating a Twitter account in conjunction with your blog (not considering doing)
  • Comment on another student’s blog
  • Watch online lectures/readings
  • Complete lab by Friday
  • Watch two online lectures
  • Read document on Mercurial
  • Read up on GCC
  • Read the How to Make
  • Build Firefox
  • Pick a project
  • Complete the Initial Project Plan

While that list doesn’t look too much larger than last time, falling behind on readings isn’t too fun because you then have to do double the amount of readings.  As like last time, I’ve crossed off all the things I’ve done so far.  Let’s do a run down.

I’ve crossed off joining Twitter, even though I really haven’t joined.  I’m not too into the whole Twitter system.  While I understand that it may have closed some doors to a certain part of the community, I don’t think it’s expressly needed.  I believe I have access to what I need with the blogs, wikis and IRC channels.  I’m not too fond of Twitter so there will be no alerts following me.  If you really wish to follow me, you can just use the feeds on my blog as this is where I’ll be publishing the important parts of my work and life.

I’m always willing to leave a comment on a blog post that interests me.  It’s part of the whole blogging community.  I know it’s nice receiving feedback on what you’ve written, so it’s only natural to do so when you’re inspired by what someone’s written.  I did this on a blog post that a colleague of mine did.  I was initially on the fence about what project to work on.  I couldn’t decide on whether to help with Processing.js or to stick to my C/C++ programming background and work on some bugs there.  I was also thinking of working on the mobile side of Mozilla with Fennec.  Carlos‘ blog post gave me what it was I was I needed.  It was the inspiration to work on something new and innovative.  Also, the courage to learn a new language and a new style of coding.  So with that, I was able to cross two items off my list.  I put my name down for Processing.js!

I finished my lab, albeit a little late, with the help of buddhatron through IRC.  My page on the CDOT wiki is now updated.  In the process, I was able to use pastebin and tinyurl as was part of the learning experience for the lab.

Now, the rest of my catching up had to do with a lot of reading and watching online lectures.  My first online lecture, about the Mozilla Community, would cause my Firefox browser to crash.  I was able to start it up at school but couldn’t at home because I hadn’t downloaded and installed Quicktime.  I talked to David about it and he said he was switching the video formats.  So hopefully, I’ll be able to see it soon.

The next online lecture I watched was called “Learning to be at the festival.”  It was a lecture given by David Humphrey and it’s a great summary for what he’s been trying to teach us during the first couple weeks of this course.  The best way to learn in the environment of the Open Source Community is to just jump right in and get your hands dirty.  You learn through experience.  It’s a great lecture for anyone apprehensive about the course work and project, which I’m sure most of us are.

I watched this week’s lectures as well.  They were not as interesting to me.  They were How the Mozilla Build Works by J. Paul Reed and Mozilla’s Build System by Ted Mielczarek.  As you can guess, they were both about Mozilla’s build system and how it works behind the scenes.  I couldn’t run the video for preed’s lecture so I just listened to the sound recording.  Unfortunately, I couldn’t follow along too well because the slides posted aren’t available anymore.  Ted’s video lecture was better, in terms of being able to access it.  However, I noticed that I wasn’t paying attention too much to either lecture.  While I can understand that being knowledgeable in what you’re diving into is important, I just wasn’t interested in the behind the scenes work.  For me, it’s kind of like Discovery channel’s How It’s Made.  It just wasn’t very interesting.  I sat through them though, not absorbing all too much.

The stuff I haven’t crossed out, I’m in the process of doing.  I was in the middle of going through the GCC reading, when I spotted another blog post that inspired me to just dive right in.  So I decided to take the first plunge and while writing this blog I was downloading and installing my virtual machine courtesy of VirtualBox.  I, then, downloaded Fedora to install on the vm.  It’s now running smoothly in the background, minus the fact that I can’t change the resolution past 800×600.  Anyone have suggestions or is this the limitation of a vm?  Anyway, I’m going to start on Mercurial and then try to build Mozilla.  I’ll update more later!

Conference Calls, Mailing Lists and Wikis… Oh My!

Yes, I know… very cheesy title.  I really couldn’t think of anything else.  Regardless of the title, the beginning of this week has been very eventful so far.  During Monday’s class, we were given another series of to-do-list by our educators.  Not a very hard list, like last week’s, but lengthy enough.  I’ll summarize them for you in the following:

  • Create Wiki accounts on MDC and wikimo
  • Consider creating a Twitter account in conjunction with your blog
  • Dial-in to a Mozilla status call
  • Join a Mozilla mailing list
  • Comment on another student’s blog
  • Watch online lectures/readings
  • Complete lab by Friday

So… not too hard at all.  At this point, I’ve crossed out the ones I’ve done.  But, I’m going to begin by telling you about the item on that list I was most excited about doing… the Mozilla status call.

I’ve been on conference calls before, working at Smart Systems for Health Agency (which merged with eHealth Ontario) over summers in my first couple of years in Seneca.  So, I wasn’t really nervous to begin with… maybe a little anxious.  David emailed us on the day the call was taking place.  I hadn’t had a chance to look at the scheduled calls at that point, and I should’ve done so sooner because I found out that most of the conference calls happens earlier in the week.  So, I was a little unprepared for it but managed to squeeze in the time to be on the call.  I was even a little early and found time to check how the phone system worked (testing the *1 to unmute).  David informed me to join the IRC #planning channel as they would be using it as well.  As can be seen in the picture below, there were plenty of people in the IRC channel during the beginning of the call.  However when I called in, the system told me there were 18 other people on the line.  Therefore, I’m thinking most of the other people on that channel were mostly just idling.  The amount of callers later rises up to 43 people, when my late friend called-in and informed me of the number.

Amount of users in #planning channel during the beginning of the call

Amount of users in #planning channel during the beginning of the call

It was an interesting setup.  Most of the time, there was one speaker detailing their issues/comments/resolutions on the topic at hand. People also discussed ideas on IRC while there was a speaker.  It gives a bit of freedom for everyone else, even with a solitary speaker talking about more important things.  The general atmosphere in the meeting wasn’t heavy-laden either… especially in IRC.  The following joke was told when doing the Blocker report on IRC.

[14:05] <jimb> Aren’t beta-blockers a class of drugs?
[14:05] <bsmedberg> so are alpha-blockers!

There was also a detailed outline on the items they would be covering… it was posted (require Google login for link) on the Mozilla Planning Group (require Google login for link) in Google Groups.  Even with the outline, I was a little lost throughout most of the call.  I am a little apprehensive in saying this, but I was having a hard time keeping up with some of the subjects they were talking about.  I may still be a little disoriented now, if it wasn’t reading my friend’s, Nadim, post on the subject.  I looked up a link he had on his post, which involved the meeting’s minutes.  Written down and with plenty of links, the meeting was easier for me to follow.  I suppose I’ll have to do a bit of research on past meetings before my next chance at listening-in.

Continuing on my to-do list, I joined two mailing lists that interested me.  The Firefox application development list and the mobile platform development list.  Those were the two lists that most interested me.  Now, I’m not completely sure how they work.  Reading over some of the mail I received, it seems to me that their development conversations between certain people and these conversations get shared to everyone on the list.  I believe you can also participate in said conversations, but you would have to reply to the mailing list in order to do so.  Someone correct me if I’m wrong please, which is very likely.

On to the final item that I’ve completed on my to-do list.  The item is creating an account on the Mozilla Development Centre (or MDC) and Mozilla wiki (aka wikimo).  I’ve also created profiles on them that link back to my email and this blog.  On that note, I will finish up the rest of the items on my list closer to the end of the week.  I have taken a quick look through the article by/in Ars Technica.  It looks promising and has me excited about reading it.  In fact, I’ll probably do that right after this post!

Week 1

First thoughts on these “readings” were… Wow, David wasn’t kidding with how much work we’d have to go through. It was a lot of reading.  Mainly, it was because I waited last minute to do them.  I won’t make that mistake anymore if this is what will be assigned as work every week, rest assured.  As he also mentioned in class, it wasn’t really hard work.  It was merely long.  One thing I do have to say about them though, it was very educational.

I didn’t know too much about the history of Open Source, Linux and the Free Software Foundation.  Revolution OS filled me in on the past.  I found it very intriguing and fascinating, which is odd because I don’t generally enjoy documentaries.  I found the idea and foundation of Open Source to be very appealing.  With the Free Software Foundation, I enjoyed the recounting of the GNU General Public License.  This license gave the user the ability to redistribute his revised code on the notion that he would do it for free to the next user; it was aptly named copyleft.  Now, one thing I always attributed to ‘Open Source’ or ‘Free Software’ was the fact that it was free and always made me think that it couldn’t earn money.  I mean, how was it possible to earn money when you’re giving something away for free?  I always generally answered with: “The only way to do so is to get some sort of investors.”  This wasn’t the case, necessarily, as Michael Tiemann proved with Cygnus.  I just thought it was worth of note, in my mind’s eye anyway.

The movie portrayed Eric Raymond and also referenced his paper: The Cathedral and the Bazaar. I can understand why David proclaimed this document as canonical.  It can open people’s eyes.  There’s definitely a great many points within the text.  One such point is Linus Torvald’s style of development – release early and often, delegate everything you can, be open to the point of promiscuity.  This leads to the Open Source communities’ law: Given enough eyeballs, all bugs are shallow.  It was, of course, suitably named as Linus’ Law.  Raymond also pointed out that “An important trait of great ones [developers] is constructive laziness.”  I’m also very partial to when he states, “I think it is not critical that the coordinator be able to originate designs of exceptional brilliance, but it is absolutely critical that the coordinator be able to recognize good design ideas from others.”  In other words, it’s all about the community.  This sense of community is one that I’m looking forward to experiencing myself this semester.  With it, I hope to achieve great things.

Hello world!

As implied by the title… HELLO WORLD!  This was the original title that was auto-created by wordpress when I created this blog.  I figured I would keep it because of how it significant those two words can be when learning programming for the first time.  In many cases, it’s the first program you learn in a new software language.  I don’t know how many times I’ve written a Hello World! program… definitely in the double digits.  Ask anybody who’s started a course in programming, “What’s the first program you learned to make?”

I actually don’t know if I should keep it because this isn’t the first time I’ve blogged.  I used to vent and ramble on MSN spaces.  It was given up when all the drama in my world subsided.  Not to say there’s no drama in my life, just significantly less to blog about.  I will use this as a personal blog as well, however since it’s supposed to be professional as well, it will be kept clean.  If I feel I can’t keep both together, I will of course separate the two.  It shouldn’t be too hard, though.  At least, I hope it isn’t too hard.

The real reason I started blogging again is due to my OSD600 Course that I am taking at Seneca College this semester.  It’s an Open Source course and I’m very excited in learning more about the Open Source community.  The way my professors are teaching, David and Chris, are innovative and appealing.  This is the reason that I am actually doing homework ahead of time.  Yes… this is somewhat part of my homework but not a boring part, in any case.  I’m required to start a blog and blog about the “readings”.  That will come after my initial post though!  So stay tuned for that.  Actually, it’s about time I finish those readings and cut this blog a little short.  I will return with thoughts on the readings!