Thursday, July 28, 2011

Hackerspace and Formal education discussion at Dublin GTUG

After some great responses to the hackerspace and formal education discussion at the monthly Dublin GTUG meet up I would like to make a few comments on the topic.

I don't want to be controversial but I do have to be a bit critical of the event for the very reason Seán mentions: A panel in which 4 out of 5 participants (plus the host) are clearly on one side, and the reamining participant doesn't take sides, can not generate much discussion. On top of that, if you frame it within a local group meetup, where at least a 90% of the people are also going to be on the hackerspace side... well, what can I say?

And don't get me wrong, I really enjoyed the session and I think some very good points were brought up but it would be very interesting to hear some arguments from the other side. Not only from an academic point of view, but running a hackerspace within a college (as it seems to be one of the suggestions) carries a lot of administrative issues such as access to the space, who pays for stuff and how that affects group dynamics (seems like at least the Dublin hackerspace guys prefer to stay away from external funding), who is responsible and liable in the case of anything bad happening, and so on. There are a bunch of issues that we missed out on because there was no one there to expose them.

A point that was fairly commented on was assessment, which is (in my opinion) the hardest topic in education, and (again in my opinion) the one that should be the focus of all potential integration of hackerspaces and formal education.
I am all for innovative and creative educational experiences but SADLY students are still evaluated in isolation and in an environment where collaboration is considered cheating.
This needs changing but hackerspaces only provide for the first part of the equation and assessment is not even an issue. Or is it?
I'd say that there is always assessment in all kind of social interactions. You are obviously not going to be awarded a degree in your hackerspace but there are other kinds of peer review and recognition patterns going on. More active members will become part of the organisation, running courses and leading events, or getting praise and recognition for the pieces they hack together. That peer recognition is obviously enough to motivate involvement with the community so could we use that as a basis for more formal assessment? I would like to hear the thoughts of academics on this (although I might not like what I hear back!).

The panel mentioned ditching standardised tests in favour of a viva after 4 years undergrad, bringing the post-graduate model into undergrad. I'd be happy with that too.

I would also like to comment on a couple of points about formal education that I felt (personal opinion) that were not all that fair. We've all seen Sir Ken Robinson's TED talks and RSA video many times and know that education is rotten but universities can also be places for innovation and fun stuff; you can see it around any postgrad lab where people are given the freedom to work on what they are more interested in. It was mentioned that students coming from a hackerspace background can do really creative projects so it is unfair to say that that does not happen.

Another comment from the host I would like to point out is that he mentioned his disappointment after entering a university classroom not long ago and seeing a waterfall model in a whiteboard (or a similar situation).
I'd say there is nothing wrong with studying waterfall this day and age. The real problem would be if the topic ended there and no other alternatives were discussed. I bring up this because I think in our field (talking about software development) we don't pay enough attention to the past and we are therefore bound to repeat the same mistakes. This is why classic books such as The Mythical Man-Month or The Psychology of Computer Programming remain very much current, even though they were written many years before about half of the audience at the discussion where even born!

Another fair point made by the panel was the big gap between education and the workplace, which funnily enough is my research topic. I still don't have a solution for that, but as soon as I get it sorted you'll be the first ones to know... yeah, that's supposed to be a joke. A bad one. I know.

So as Seán mentions there are a lot of unaswered questions and I would like to bring up another one here: If we are all in the hackerspace side... why are we all still getting degrees?

All panellist have degrees, are working towards one (or more), or expecting to get enough points to get into one.
John Looney mentioned that Google hires people with no degrees (about a 10% of current staff if I heard correctly?) so why are we still going through the pain of getting one?
(Lecturer) Mark described the process as something like yearly semaphores that are used to sort people into groups and keep them entertained for a while. Is the social pressure worth all that pain?

It was very funny to hear one of the guys from 091 Labs in Galway commenting on the Irish mums effect, that can affect how courses can be considered good or bad.
And talking about mums, wouldn't it be nice that instead of being proud of their kid's degrees they'd be proud of their kids spending all evenings at the local hackerspace? Can we make that happen?


As a personal note, I would like to add that I completely disagree with the comments about free education filling up lecture theatres with people that somehow do not deserve being there.
I would hope we could focus on challenging those fake social needs that equate having a degree with being 'someone'. In that case only people with a real interest would go to college, regardless of their parents (or themselves) having the money (or not) to pay for fees.


Utopian? yes, and almost as unachievable as  teaching kids IT skills (Coder Dojocomputer club house, Camara), getting people to build stuff (TOG091labs NexusMilklabs), or creating great software and communities through volunteer work (Apache Foundation, GNU OS, P2PUOpen Wonderland).

Monday, July 18, 2011

Dublin JavaScript Group July meet up -- Kata Reloaded!

We are organising another Kata session for the Dublin Javascript meetup this month, which will happen tomorrow Tuesday the 19th at 6.30pm @amworks. You can sign up here.

These are my slides for the event, which are pretty much the same as the ones I used last month.


The initial idea was to have a presentation on Processing.sj although that has been postponed, but I'm sure Nigel will come up with something. And in any case we are going ahead with uncle Bob's Prime Factors Kata.

The solution, in the form of a powerpoint document, can be found here so you don't really have to worry about the solution itself and can focus on practising the Kata instead.
A couple of interesting points I've noticed after practising it a couple of times are the differences between his Java implementation and a JavaScript one, and my mixed feelings to his last refactoring, which I find a bit contrived. I prefer to stop at the level of 'while' structures because I believe it preserves the intent of the algorithm a lot more than if you go the whole way and replace them with 'for' structures. The result has more lines of code but in my head it's clearer. But as usual, this is a personal preference and everyone will have their own, which is a good thing!

The format for this part of the meetup will be the following:
I will go through the slides, which will take me about 3 minutes. Then we will set about 20 minutes for people to work on the Kata. Working in pairs using ping pong pairing would be highly recommended. The idea is that one person writes the first test, the other person makes that test pass and writes the following test, and this goes on until the Kata is solved. If you don't want to pair, that is fine. If you don't want to program at all, that is fine too!
During those 20 minutes I'll be available to help out, especially to any new faces that are not familiar with the concept of a Kata or with Jasmine. At then end of this period we will project one solution and have a short retrospective about it.

And that is all, please feel free to join us from 6.30pm at amworks. See you there!

Friday, July 15, 2011

Sprockets for JavaScript

As a JavaScript newbie, a thing that some times puts me off when I see some libraries out there is the fact that they tend to be just the one big file, with long functions and tons of lines of code that is not that easy to follow.

Sprockets aim is to help out with this situation. As their website reads:
[Sprockets] helps you turn messy JavaScript into clean modules for development and a single file for deployment.

Sounds good to me!!! so how to get started? Reading the manual, of course!

The following is a quick a dirty guide to Sprockets and how to use it from the command line with the sprocketize command. I have created a really silly bunch of sample files that contain only dummy js functions and are here just to illustrate the use.


Installation

Installation is easy peasy through a Ruby gem. The only trick here is that if you are using rvm (and you should!) you will not need to use sudo, and if you are using your system Ruby it will probably be need. So let's do it:

gem install sprockets

And you are ready to go!

What else you need to know? Only two more things are needed: directives and the sprocketize command.


Directives


//=

Comments that start with the symbol above are considered directives, and they are used to pull in other resources that your project will use: other JavaScript files and any assets you use in the form of stylesheets, images, and so on.

There are two directives currently supported in Sprockets, require for other js files, and provide for other related assets. If the files are surrounded by quotes as in "myfile", then sprockets will only look for that file in the same directory. If is used, then all the load path will be searched for. That load path can be indicated to sprockets through the command line option.

So let's see some code: I have two files called my_file_1.js and my_file_2.js and I want them in just the one file for deployment. The contents of the files are:

my_file_1.js

function firstFunction() {
  // I do nothing really!!!
};



my_file_2.js

//= require "my_file_1.js"
function secondFunction() {
    // I do nothing but function one should appear before me
};


The Sprocketize command

There are different ways to use Sprockets being probably the Ruby library the most used. But the gem also bundles a command line tool which is a wrapper for the Ruby library so let's go with that cause it is really easy.

From the previous section we have two files called my_file_1.js and my_file_2.js and I want them in just the one file for deployment. To generate that concatenated file we can do:


sprocketize *.js > deployment_file.js

This will create a file called deployment_file.js with the following content:

deployment_file.js
function firstFunction() {
};
function secondFunction() {
};


You can see that firstFunction has been pulled in before the second one, and in the process all the comments and stuff that you don't need to deploy have also been stripped out. How nice is that!!!???


Hungry for more?
There is more about Sprockets that you can fin about in their manual. It is a great tool that I hope to start using soon.

Tuesday, July 12, 2011

Code Review Session for Open Wonderland 0.5 Preview 5

Preview 5 is coming... finally!

The Open Wonderland community is closing off the last bunch of issues, being the major one the Video Module that will finally work out of the box, without having to fiddle with the sources. As usual, Jon is in charge of the really hard stuff (Thanks Jon!).

As always, this is a community effort and we are all trying to contribute as much as we can. If you would like to help us move forward please do not hesitate to contact us!

At the meeting, the usual suspects were around, and we all took on some of the problems to fix. On my side of things, I've been poking about with the Placemarks menu, trying to make it a bit more user friendly by alphabetising the marks, separating them in more logical chunks, and so on.

Discussing and Assigning Bugs in-world


Last wonderland Wednesday session was devoted to discuss what was going to be fixed and added in the preview, and this Wednesday (July the 13th), we have organised a Code Review session after the normal Wednesday session.
I think a code review is a great way to learn, and it will definitely be very helpful for me, as I am not very familiar with the codebase. Please feel free to join us if you are interested in Wonderland development.