So I setup my Github account, forked over John Buckley’s source code and installed and cloned the repository on my local machine.

I also downloaded processing 2.0 to be able to run and test sketches quickly. (If you’re annoyed by the external links, sorry, it stops here!)

I started browsing through the source code and most of the file structure didn’t make sense to me. I did find the 700kb processing.js file in the root directory, which I think will be the main file I will be confined to.

However, I am not sure if processing 2.0 that I downloaded uses the latest processing.js version as when I try to create a primitive 3d shape, such as a box, I get the following error:
box() is not available with this renderer.

I tried running the same sketch on firefow directly too and it still didnt work. Puzzling, as the functions I am using are listed on processing.js’s references website and even the sketch is taken from their example!

I am trying to run it with the following code..

void setup()
{
  size(200,200);
  background(125);
  fill(255);
  noLoop();
}

void draw()
{  
   translate(58, 48, 0); 
   rotateY(0.5);
   box(40);
}

Error that processing spits out:
translate(), or this particular variation of it, is not available with this renderer.
rotateY() can only be used with a renderer that supports 3D, such as P3D or OPENGL.
box() is not available with this renderer.

Time to google for solution….

Fortunately, the bug that I’ve selected for my contribution to the project is something I understand.

Here’s the background:

So, in processing.js, there are a lot of commands that can be called upon to perform different objectives. For example, if I want to draw an empty rectangle, I could write a sketch as follows:

	void setup() {
		size(200,200);
		background(125);
		fill(255);
		noLoop();
	}

	void draw(){  
		rect(30, 20, 55, 55);
	}

(A full list of command references for processing.js is available here)

I would link the sketch to a canvas in HTML, and the browser would render it as so:

Now, if I wanted to make the edges around this rectangle rounded, to make it look nicer, I could just add an additional parameter in the arguement, which is the width of the radius of the roundness, such as so (which was contributed by John Buckley):

rect(30, 20, 55, 55, 10);

And the result would be:

However, if I wanted to achieve the same rounded edges on a 3D rectangle (more appropriately, a cube), there is no function for that yet.

This is what I have to work on in the coming weeks 🙂

After much thought, I have finally selected my open source project.

The road to selection was not easy, but it was a fun and learning experience.

For a week I stayed signed in on IRC’s paladin & processing.js channels and tried to bother others with questions via personal messages. Several were friendly and helped me with my questions, but no one could tell me what I wanted to know – “What role can I play in this project that would be right for me and last about 6 weeks?”. I knew the answer is not an easy one for me, and even harder for someone else to answer as without knowing my background, it will be very difficult to ascertain.

All I knew after going through a lot of reading material on paladin and processing.js, I wanted to get involved. But what does it require? Will I code in java? C++? What about understanding the background of the project? Is there a mentor I can discuss my progress with? What if my code isn’t going anywhere?

As I got closer to the deadline, I was frantically searching on bug trackers for mozilla, paladin and processing.js for a ticket to take up. Paladin was too small, and mozilla was too huge. Processing.js was just right!

Having previously worked on processing.js in an assignment, I was already familiar with the language. I also understood what role it plays among other web technologies and what need it fulfills. As the deadline grew closer, I grew more confident that I needn’t address all my concerns about the project size etc right now. I thought, that’s what the course is about – about the experience of contributing to an open source project. And this confusion I had was part of the learning exprience. I realized I had already learned much in the first 3 weeks of the course – where would I look if I wanted to find an open source to contribute to, where I can communicate with its developer community, what tools and utilities I need to get started.

I felt I had delayed long enough, and it was time to jump in, grab a code by the horns and get hacking.

Still as unsure as I could be which project I would contribute to, the best start was reading the details of bugs I found interesting myself. Looking through its history and making sense of what it might require and judging for myself if I understood what I had to fix, was a good enough start.

I settled on a bug I discovered on processing.js’s bug tracking software – lighthouse. (There was another bit of stuff I had learned in just 3 weeks – getting familiar with bugzilla, pivotal tracker and lighthouse).

After setting up my account on github and lighthouse, I got the ticket assigned to me from processing channel on irc.

Then came the next big step – I have selected the project, where do I go from here? Subject of my next blog post…

Been on IRC mozilla’s introduction channel and bugzilla for last 1 hour. Feel lost 🙁

The bugzilla’s list of open bugs is hugeeeeeeeeeeee and mostly meaningless to me:
https://bugzilla.mozilla.org/buglist.cgi?product=Firefox&component=General&resolution=—

I’ve already narrowed it down by Firefox.

But as I narrow it down further, it does get smaller, but the bugs seem too out of my league. I know that’s what I should be feeling while looking at these bugs, but still.

Another problem – it is really hard to tell which bug I will be able to take on and which might prove to be too difficult. A lot of them are localized to a particular operating system or at some advanced stage of their lifecycle, not sure if it’s worth working on them?

Anyway, the hunt for the right bug goes on…

For several months now my enthusiasm for learning GIT has been increasing as I hear more and more about it. Almost everyone who talked to me about it was a huge fan of Git and its model over SVN. They all seemed convinced it was some sort of a revolutionary idea and that it was leaps and bounds better than SVN. Now, admittedly, it is quiet often you will come across ‘fan-boys’ for all sorts of different software tools/projects/companies etc. But that didn’t console me about the fact I was completely out of loop on this one.

Today was the first class I attended for my new open source course, and fortunately the topic covered was Git. I didn’t know much about it except that its model is sort of the converse of SVN, as in, it is not centralized, but distributed. I’ve used SVN for the past 1 year in several projects and was curious to get introduced to this new radical concept.

First, I was surprised to learn that it was developed by Linus Torvald, as a way to co-ordinate developing the Linux kernel more efficiently with the large development community around the world. It was already living up to the hype it had generated in my mind so far.

Then we got deeper into comparing its model directly with SVN. I’m pretty sure my reaction was the same as most people’s first reaction to the idea of a repository distributed on the machines of each of the developers – “Emmm…how is that going to work??”.

I admit, while learning about Git, I did have a bias towards it just from the hype around it, and also because the idea of a distributed model, as opposed to a centralized model seems to me a little more….emm…democratic 😛

However, even though I find I am still enthused about the idea, I don’t appreciate how it is leaps and bounds better than SVN yet.

I have been struggling to see how a clone of a repository for every developer, will make the process of resolving conflicts easier than SVN.

It seems natural that any number of developers that start off with the same source-code, will end up far off from each other’s code in just a couple of weeks. In-fact so far that resolving the dependencies will require a study of the other developer’s code that alone could take a couple of weeks.

On the other hand, so many large open source projects that have selected Git for their sub-versioning control system really adds to its credibility. So I’m sure I will come to see all its benefits in time. Now step 2 is to set it up and start using it for my open-source project 🙂

Jupiter - all 4 moons - 11th Oct 2010

By far my best viewing of Jupiter yet. As you will find in my Night sky on 29th July post, most of the other planets are out of the view for atleast next couple of months. Uranus & Neptune are still in view, but without properly collimating and aligning my scope, its very difficult to actually spot them.
So I trained my telescope on Jupiter again tonight, as this is one of the best views of Jupiter we will get for years to come. I got a lot of good snaps and even a few videos of it moving across the view of my 32mm lens.

Clear skies, full moon…what a beautiful night. I actually found good use for my two other lenses besides the 32mm tonight. I surveyed the edges of the moon with the 15mm to see some of the features of moon really up-close. The 6mm offered an even better view, I could make out mountains and craters with great resolution. I could almost see the slope of the mountains. Getting a good snap proved exceeding difficult because even in the 32mm lens, I couldn’t fit the entire moon in one view! Attached pic (32mm).

Jupiter - Aug 17th 2010

My first sighting of all 4 Galilean moons in one night. Went down to SunnyBrook park with two friends. Fortunately Martin had much more stable hand than mine, and took this great shot of Jupiter (32mm lens) with what appears to be 3 Galilean moons. However, after 30 minutes we noticed the 4th Galilean moon coming out of hiding from behind Jupiter. I went back to this photo and noticed a very slight irregularity in Jupiter’s roundness near what would seem to be the geographic South pole. Turns out it was the 4th moon coming around 🙂 Thanks for the snap Martin! Enlarge the pic for best viewing.

Jupiter and Galilean Moons - 14th Aug 2010

What a frustrating night. I drove out to a park in the middle of the night to get a view of Jupiter up close. Spent 20 bucks just for the batteries to run the Nexstar without its charger and had to struggle for 15 minutes to spot Jupiter. But when I found it, it made it all worthwhile. What a beautiful sight, a perfectly rounded Jupiter, very good resolution and in view 3 of the 4 Galilean moons! I’m not sure which ones are which, but I will find out before the next time I view it. Again I took the photo with my Canon IXUS 75 camera and the 32mm lens. I’ve noticed if I use any other lens, the resolution is barely good enough for my eyes, let alone the camera.

Planetary positions on the night of my Saturn viewing. (Click on the image to enlarge)
Source: http://www.gunn.co.nz/astrotour/