Tuesday, September 28, 2010

My Guest Lecture experience at Memorial University

I just got back from providing my first guest lecture to an under graduate class of Computer Science 3716 Software Methodologies at Memorial University. It was a fun experience, which I am supposed to re-iterate next semester (Winter 2011).
Memorial University Engineering Building
My talk touched on various subjects including a quick Apache Way introduction, a brief description of the projects I've worked on, my views on technology, and project management. We attempted to keep the talk focused towards entry level development in St John's, but did expand things to include working on the international level in large scale projects. Particular empathises was given to working on open source projects such as Apache Servicemix, Felix, and Karaf.

Unfortunately there is never enough time to dive as deeply into technology issues as I'd like there to be, but I hope that the students enjoyed the talk and took away something useful :)

Friday, September 24, 2010

Memorial University Fall 2010 CS Team Programming Competition Results

The Fall 2010 CS Team Programming Competition took place at Memorial University this evening. Five teams entered, vying to win prizes and obtain the honor of representing the Mun CS Department at the regional APICS games.
I've copied in a few pics taken during the competition... all in all everyone had a lot of laughs, good willed fun, and geeked out.
I'd like to congratulate the first place team, Josh McCarthy, Hazel Dalton, and David Hornell, on a job well done. They will move on to the next round of games at Saint Mary's University. As a side note, all three team members are student employees at ICAN - they have a great talent pool here!
A solid performance was displayed by the second place team consisting of Chris Whalen, Robert Robere, and Stephen Piercey.
And finally in third place, the team of Nathael Woodfine, Sarah McCausland, and Megan O'Connor.
I'd like to wish best luck to the Mun CS team as they move up the APICS competitions into the ACM games. I'd also like to thank all the students, volunteers, and the games committee again for making these CS games possible.

Apache Karaf 2.1.0 Released!

The Karaf team is pleased to announce the availability of Karaf 2.1.0.

Apache Karaf is a small OSGi based runtime which provides a lightweight container onto which various components and applications can be deployed.

New to this release is a JAAS Database Login Module (see KARAF-180), and a mechanism that allows a karaf application to distinguish between UserPrincipal and RolePrincipal without depending from the Karaf JAAS Module (see KARAF-172).
The shell console has been enhanced to be available in a plain non-OSGi environment and smart tab completion has been improved, along with various new & improved commands.
We have also resolved a number of outstanding issues, and improved support on OS X and IBM Java based systems.

To help make the transition from Apache Karaf 2.0.0 to 2.1.0 easier I've put together the following table of changed dependencies:

Artifact Karaf 2.0.0 Karaf 2.1.0
aopalliance 1.0_3 1.0_4
cglib 2.1_3_4 2.1_3_6
commons-codec N/A 1.3_3
commons-lang N/A 2.4_4
jasypt N/A 1.6_1
jetty 6.1.22_1 6.1.22_2
felix.fileinstall 3.0.0 3.0.2
felix.framework 3.0.1 3.0.2
felix.webconsole 3.1.0 3.1.2
aries.blueprint0.1-r964701 0.2-incubating
aries.jmx 0.1-r964701 0.2-incubating
pax.exam 1.2.0 1.2.2
pax.logging 1.5.2 1.5.3
pax.runner 1.4.0 1.5.0
pax.web 0.7.2 0.7.3

For more information, please see the release notes.

I'd also like to thank everyone again for their support and encouragement over the last week. If we had named releases I'd call this one "Apache Karaf Irksome Igor".

Tuesday, September 21, 2010

Apache Karaf 2.1.0 RC#2 is up for vote, still bailing out the house.

Apache Karaf 2.1.0 RC#2 is up for vote.

Please take some time to review and vote for this release candidate.

Sadly, Hurricane Igor has decided to turn my basement into an in house swimming pool. I'm currently working on bailing her out. I'd like to thank Jon AnsteyDwayne Hart and Jon Manuel for racing over to lend a hand.
Jon manning a shopvac.
The sump pump working overtime.

Monday, September 20, 2010

Apache Karaf and the Hurricane

Part of the fun of coding by the sea is enjoying the local environment, unfortunately that environment sometimes includes storms... currently I'm dealing with Hurricane Igor :(  
My power and internet connections have already become unsteady such that I worry if I try to cut a release candidate then I could have the connections drop (or encounter a long power outage) during the release process. In the interest of producing a clean RC I'm going to delay cutting RC#2 until later tomorrow. I've contacted the Karaf dev list to inform them of the local conditions, and may have another committer pick up the release manager baton for this RC if conditions here persist for too long.


Igor to pound NL:
http://www.cbc.ca/canada/newfoundland-labrador/story/2010/09/20/igor-hurricane-nl-ns-920.html

Environment Canada Warning:
http://www.weatheroffice.gc.ca/warnings/report_e.html?nl21

Back to battening down the hatches for me, cheers.

Hitting a brick wall, aka receiving a minus one ;)

Well it didn't take too long after publishing a Release Candidate for Apache Karaf 2.1.0 that a community member discovered a flaw that we had believed to be resolved. A quick patch submission followed, so we are canceling the current RC and re-setting for another run as per our release guide.

So what does this entail?
  1. Delete the current Apache Karaf 2.1.0 tag from svn.
  2. Drop the RC from Nexus staging area.
  3. Rollback the pom versions from 2.1.1-SNAPSHOT to their last version.
  4. Reviewing and applying supplied patch for the reported issue.
  5. Returning to the start of the release process.
This is the heart of the Apache release process, ensuring that only vetted releases are published to end users. I decided to post about this occurrence since many people have asked me before about how we handle situation like these. It's a lot of work but quality is among our top priorities.

Sunday, September 19, 2010

Apache Karaf 2.1.0 coming soon!

Since my last blog post on the upcoming Apache Karaf 2.1.0 release I thought that I should update everyone on its current status. The 2.1.0 release candidate is now in the validation phase, and is currently being tested by the Apache Karaf community as per our release guide :)

Some users may have noticed a link to the upcoming 2.1.0 release appear on the project homepage - no downloads are currently available. The Apache Karaf downloads page will be updated once a release candidate has been fully vetted by the community and voted to release status. So please stay tuned, if all goes well then I should be announcing the official release soon!

Friday, September 17, 2010

Memorial University Fall 2010 CS Singles Programming Competition Results

The Fall 2010 CS Singles Programming Competition took place at Memorial University this evening. Seventeen students registered for their opportunity to try their algorithmic skills on three problems developed by the Mun Programming Competition committee. 
Several CS alumni donated their evening to help referee and support the games. They were kept very busy as runners as the competitors kept very focused on solving the problem sets instead of digging into the piles of pizza and cookies the games committee graciously provided.
The night's big winners were Robert Robere (left), Tim Oram (right), and Stephen Piercey (center). They each took home a programming related text book, Ubuntu mug & install disc, and a Memorial University pen.
Next week the Fall 2010 CS Teams Programming Competition will be going ahead. To Memorial University CS students still looking for team members to register for this event please login to the CS Society forums and post under "I need a team!". As some additional motivation samples of the team prizes are shown below - you know you want to win them ;)
I'll be posting a link to the problems and solution sets to tonight's games once made available by the department.
I'd like to thank all the students, volunteers, and the games committee again for making these CS games possible.

Thursday, September 16, 2010

On the road towards Apache Karaf 2.1.0

This week we started the process of moving Apache Karaf trunk towards a 2.1.0 release. As part of this release I'll be acting as the release manager. This has meant that I've been spending time reviewing our issue tracker and delegating tasks to contributors/committers. Once we have a stable source tree I'll proceed to follow our release guide to deliver the new build.

A couple of notes from my experiences on the road towards this release:

  • Test build with every Java version you have at your hands - you'll catch the small gotchas that creep in with Java 5/6 incompatibilities or between vendors (Sun/Oracle, IBM, and Apple JVMs).
  • Double check, then check again for any lingering SNAPSHOT versions in your dependencies - finding a SNAPSHOT late in the game means having to put your release on hold while another project goes through it's release process.
  • Branch your current trunk - this lets further development carry on in the case that your experiencing delays cutting your current release.
  • If you can, build up a reliable build infrastructure - My previous release was performed upon a Ubuntu Linux 10.04 LTS VM hosted on Virtualbox on my macbook. This setup was actually quite reliable, however an unplanned swimming trip my macbook took could have wiped out this release environment. My new release environment is now comprised of a pair of Dell 1850 1Us in failover configuration, on a line conditioned UPS, sitting behind a BSD based firewall (back ups is currently external hard drives, will add to this setup over time).

I hope to have the next release of Apache Karaf out soon, so stay tuned for an announcement.

Wednesday, September 15, 2010

Developing Open Source on AIX

I was recently pricing some AIX gear for supporting my work on Apache Karaf and quickly became depressed on the totals -- no surprise of course, UNIX is never cheap (to be completely fare HP-UX and Sun/Oracle non-x86 systems are also pricey). Looking around the net for alternatives turned up very few leads. I guess one is left with having to look for used systems from a reputable reseller or on ebay.
Since my projects are mostly Java based I have spent some time crafting a Ubuntu Linux VM loaded with IBM Java, and tweaking the shell & environment to be more AIX like. This has served my needs well for the most part, unfortunately there is no substitute for a real working AIX system.
This process has left me wondering how have other open source developers approached supporting this platform? Please leave your insights and experiences in the comments below.

Tuesday, September 14, 2010

Where does Newfoundland fit in with the Canadian Video Game Industry?

I just wanted to re-post a few stories being carried on the CBC. I'm not in the Newfoundland video game industry but I'd like to know how we relate to the issues touched upon in these articles.

Respawned: How video games revitalize cities.

Video game subsidy battle heats up.

In my last post on the local game industry I had asked in my reader responses "I wonder what the barrier to entry was that prevented the industry from flourishing like this before? Has the costs of development dropped enough? Did some government program silently encourage its growth". I haven't heard much in answer to these questions but I'd like to read any opinions/answers in the comment section below.
A few more questions I'd like to add; Do you see Newfoundland as being competitive given the benefits available elsewhere in Canada? Being a smaller province do development studios put down 'roots' into our communities faster here? What spin-offs have we already seen from our own games industry?

Monday, September 13, 2010

Happy Programmers' Day!

Happy Programmers' Day!

Programmers' day is an official holiday in Russia, which is celebrated on the 256th day of the year. This year it fell on September 13th which is today :)
I celebrated this year by spending some time working on an AIX issue which I had reproduced with IBM Java on a Ubuntu Linux VM, running on my Macbook - then spending some time planning the up coming Apache Karaf 2.1.0 release, finally turning towards some background tasks for the programming competition I'm volunteering at and helping to sponsor at Memorial University later this week.
To help celebrate this day with my fellow programmers I'd like to share some pics from my other blog that I think you may all enjoy.

Thursday, September 9, 2010

Apache Release Management

I originally wrote this article shortly after performing Apache Karaf's first release as top level Apache project. Since then I have participated in numerous releases, and have come to view release management as both an art and a science - the roles a Release Manager (RM) takes on with a project are many and varied. I hope the below article helps introduce some of the issues a RM tackles, and provides some insights in to how Apache projects reach release status.

I recently had the privilege to perform the release management duties for Apache Karaf's first release as a top level project. The process went relatively smooth considering we were creating our release guide as we worked. So for this blog entry I'd like to talk a little about the experience in the hopes that other release managers may gain some more insight into the goings on in Apache projects.

The duties of a release manager (RM) are diverse, it includes serving as a facilitator, gatekeeper, architect, support engineer, and overall as a coordinator. In these roles the RM will deal with software defects, issues, risks, change requests, feature requests, deployment and packaging, and community involvement. Sometimes these duties are liken to the practice of herding cats, however it's so far been my experience that most parties involved in Apache projects just want things to go smoothly towards each release.
The facilitator acts as a go-between different parties.
As a facilitator the RM's goal is to provide the drive towards a timely release. The RM works here as a liaison between different contributors, committers, Project Management Committee (PMC), and other projects to guarantee the smooth delivery of a release. Normally this process starts by the RM sending out a proposal to the project developers requesting that a release be cut at some up coming date. When a release candidate is prepared the RM will then hold a vote for project members to ratify the release.

Apache Karaf build
and release infrastructure.
The gatekeeper role is the practice of having someone held responsible for the resources required for production of the release. In Apache projects this responsibility is somewhat modified in that the RM typically has committer status on the project (quite often part of the PMC), has a signed PGP key for the project, and access granted to production support systems. The actual systems used to produce a release candidate are often the personal property of the RM, so proper documentation of how to build the release environment must be maintained in order to not create a magic build machine. Pictured to the right is the Apache Karaf build and release infrastructure. When not in use I keep the machines physically disconnected from the internet, no development or testing use is permitted on these machines (I have other resources available for those purposes). There is an excellent article on the measures some RMs go to in regards to protecting their PGP keys here. I rely on a secure physical location in a remote part of Newfoundland, up to date security patches, and disconnection from the internet when not in use, as my peace of mind from having the release system I use becoming exploited.

RMs build processes like
fortifications. - protecting
build quality.
The architect aspect of the RM role is in building processes or tools to manage the project release. In Apache Karaf some of these tasks can be seen in the release guide. Having this release guide published helps not only the RM during the release process, it promotes the open process by which the project operates. Decisions and practices are clear throughout the release process, and are open to discussion. An example of the type of tools used by RMs include code signature verification scripts (test all pgp signatures, MD5s, etc) and the Apache release audit tool. In relation to these tools are the continuous integration system Jenkins, and automated analysis tool Sonar, which RMs use in the lead up to a release candidate. Reviewing these tools status reports the RM can gain confidence in the quality of the build they are promoting towards release statue.

As supporting systems
increase, the RM has to
ensure they're maintained.
The support engineer role of the RM is to resolve issues encountered with the build and release infrastructure. In setting up for the first Apache Karaf release a lot of my time was spent on creating accounts or correcting generated permissions. The next release should go smoother since a lot of little details have been taken care of now. Some of the infrastructure that the RM has to work with includes (but not limited too) the source control management system, issue tracker, project wiki, project website, Continuous Integration builds, Sonar reports, and Nexus repositories.

Finally the coordinator role is to balance the needs of the contributing developers with that of the communities requests. In the Apache world this means attempting to align contributors efforts with that of user and other projects needs towards making the release date. This may mean communicating with developers to attain status' on particular issues in the project tracking system, or assigning issues to available resources to get required work resolved.
The co-ordinator role can feel like balancing on the edge of a 200 ft cliff.
In conclusion the Release Manager is an indispensable role in the process of producing Apache software. They handle the many competing demands of parties involved in their project and help keep each release on time.

Wednesday, September 8, 2010

Apache Micro-Hackathons

I've written here before about working from home, and the isolation effects of working on open source projects from here in Newfoundland. The only sensible way I've found to work around this is to try and group together my local Apache users and try to get some hackathon time in.
The general setup is the same each time, meet up somewhere, eat good food, drink good drinks, and code! Since there is a very small community of people working on or with Apache projects here locally I've taken to calling our meetings Micro-Hackathons. Here's a pic from today's Micro-Hackathon (featuring committers from Activemq. Camel, Servicemix. Felix, and Karaf).
If your developing with Apache in similar circumstances as we have here in Newfoundland I'd greatly suggest trying to host your own little Apache gatherings. There fun, productive and an all around great way to geek out.

Tuesday, September 7, 2010

TWO! Programming Competitions - September 17 and 24, 2010

I'm re-posting a message sent out from the Mun Computer Science Department to their undergraduate students. It contains details surrounding the two programming competitions I recently posted about.

---------------------------------


Calling all Memorial University Computer Science Students!  Two, count them, two upcoming Programming Competitions!

---------------------------------
For information and to see pictures of the great prizes you can win, check out:

Blog link to Individual Competition:
http://icodebythesea.blogspot.com/2010/09/memorial-universitys-fall-computer.html

Blog link to the Teams Competition:
http://icodebythesea.blogspot.com/2010/09/memorial-universitys-fall-computer_02.html

Also, here's the the URL for the solutions from the Winter 2010 Individual Competition: ttp://www.cs.mun.ca/~harold/PC/

-------------------------------------------------------

(1) Individual Competition

Would you like to participate in our Programming Competition?   The
competition is open to any Computer Science undergraduate student, first year and above, enrolled in a Computer Science Course.  This competition is for individual participation (not teams).  The problems need to be solved using Java or C.  The competition will be held:

Friday, September 17, 2010
5:00 to 7:30 p.m.

Please submit your name and e-mail address to Regina in EN-2021 or to
redwards@mun.ca by Wednesday, September 15.   There will be a
maximum of 16 participants, so don't delay!

(2) Team Competition

Would you like to participate in the APICS Annual Programming Team Competition? Each October, this competition is held in conjunction with the Annual APICS (Atlantic Provinces Council on the Sciences) Conference and is sponsored each year by a University in Atlantic Canada.  This year, the Conference will be hosted by St. Mary's University.

The top three teams from the Preliminary Round at St. Mary's University are then invited to the Northeast North America Regional Competition of the 2009-2010 ACM International Collegiate Programming Contest sponsored by IBM.

The winning team from our Departmental Competition will be invited to attend the Annual APICS Conference at St. Mary's and participate in the Preliminary Round.  This conference also includes a Student Paper Presentation Session. Our departmental competition will be held:

Date: Friday, September 24, 2010
Time: 5:00 to 7:30 p.m.

If you are interested in participating, please contact Regina Edwards in the Computer Science General Office or by email redwards@cs.mun.ca by Wednesday, September 22, 2010, with the names of your team members.

Monday, September 6, 2010

Where have all the St John's LUGs gone?


Where have all the St John's Local Users Groups gone?

At one time there was no less than two major technology groups meeting regularly in town (The St John's Linux and Dot Net Users Group respectively). These gatherings generally occurred on Memorial University campus, to a mixed crowd of students, professional practitioners, and hobbyists. Information and experiences would be shared, and networks established - the same as seen in LUGs for various technologies in many other major centers (Yes St John's is small, but it is the largest population center on the island). In recent years however these groups have effectively disappeared...

So I'd like to know what happened to these groups. Did the need for local support networks decline as software documentation improved? Has the ecosystem of platform user groups expanded to the point where there is not enough community to effectively have meetings (Apache, Linux, Java, .Net, BSD, Oracle, IBM, Mac, et al)? Have online communities replaced the need for local user groups?

Personally I found these groups very useful when I was just beginning my studies in Computer Science. I learned new technologies and networked my way into my first professional job. Not having these groups now I wonder how and where the local IT industry manages to trade stories and network like we did not too long ago.



Update:


A reader sent along the following link to NL IT Pro as one of the very few active IT oriented groups in town. Thanks for the link!

Upcoming local events and seminars; September 2010

The month of August was devoid of events and seminars, luckily there are several up coming this month:


Mun CS Games (Singles) Fall 2010:
September 17, 2010 @ Memorial University, Room EN2036 @ 5pm.
Note: Open to Mun Computer Science Majors. 
Mun CS Games Competition


Mun CS Games (Teams) Fall 2010:
September 24, 2010 @ Memorial University, Room EN2036 @ 5pm.
Note: Open to Mun Computer Science Majors. 
Mun CS Games Team Competition


NATI:
Wednesday, September 15, 2010 @ Atlantica Restaurant, 38 Beachy Cove Rd, Portugal Cove-St Phillip's NL.
Note: See NATI for more details.
Employer Information Session on International Recruitment



NATI:
Wednesday, September 22, 2010 Session 2:00pm-4:00pm, Mood to Mingle Networking 4:00pm-6:00pm @ Bella Vista, St John's, NL.
Note: PDF link, NATI members only
Member Information Session: NATI and OCIO


Coming this Fall:

High Technology Crime Investigation Association, Atlantic Canada Chapter:
October 20, 2010 @ Delta Hotel, St John's NL. 
8th Annual Conference.

IEEE Newfoundland and Labrador section, and Memorial University:
Thursday, November 4, 2010 @ Holiday Inn, 180 Portugal Cove Road, St John's NL.
Nineteenth Annual Newfoundland Electrical and Computer Engineering Conference.

Thursday, September 2, 2010

Memorial University's Fall Computer Science Team Games

Each Fall semester at Memorial University's Computer Science Department an ACM style team competition is held. These competitions are very similar to the singles competitions with the exception that teams consist of three students and the challenges are more difficult. To help boost interest in this Fall semester's team games I've gone ahead and provided the CS department with some additional prizes.
First prize (one prize pack per team member):

  • Mun Tote bag.
  • Pringles BBQ Chips.
  • 5 Gum.
  • Mun Pen w/Case and,
  • A computer related magazine (September Edition).
  • Advancement to the next round of competition (see Mun Computer Science Department for more details).
Second prize (one prize pack per team member):
  • Dust Off Air Duster
  • Nescafe Instant Coffee
  • 5 Gum
  • An Extreme Programming book and,
  • A Mun Market Bag.
Third prize (one prize pack per team member):
  • Dust Off Air Duster.
  • Dust Off Screen Cleaner kit.
  • A copy of the Linux Journal (September Edition).
  • 5 Gum.
  • CD Binder and,
  • A Mun Market Bag.
The Fall 2010 CS Team Games are tentatively scheduled for September 24th, in room EN2036 at 5pm. When a link to the information regarding competition rules, and other details becomes available I'll update this post.

Memorial University's Fall Computer Science Games

Each Fall and Winter at Memorial University's Computer Science Department an ACM rules programming competition is held for their students. Last spring I attempted to boost student interest by providing some prizes, this went over very well for all involved, so this Fall I'm repeating the gesture.
The prizes:
  • The first place prize will be a copy of Refactoring: Improving The Design Of Existing Code, an Ubuntu Mug, an Ubuntu 10.04 LTS install disc, and a Mun pen.
  • The second place prize will be a copy of Extreme Programming Installed, an Ubuntu Mug, an Ubuntu 10.04 LTS install disc, and a Mun pen.
  • The third place prize will be a copy of Python Pocket Reference, an Ubuntu Mug, an Ubuntu 10.04 LTS install disc, and a Mun pen.
Some lucky runners up will receive a loot bag containing a Mun pen and Ubuntu 10.04 LTS install disc.
The Fall 2010 CS Games are tentatively scheduled for September 17th, in room EN2036 at 5pm. When a link to the information regarding competition rules, and other details becomes available I'll update this post.