Saturday, January 28, 2012

Memorial University CS Games Singles Winter 2012 Results!

The Winter 2012 CS Singles programming competition took place last Friday night at Memorial University. Seventeen students took part, trying their skills against the algorithmic conundrums the programming competition committee prepare as their set of three problems (click here to see problems, and solutions).
After 150 minutes the competition time expired and the judges prepared the results.
The volume of submissions for this competition was impressively high, at the end though three students emerged with top results; in third place was Megan O'Connor, in second place was Adam Murphy, and finally in first was Ken Collingwood.
3rd2nd1st
I'd like to thank all the students, volunteers, and the games committee again for making these CS games possible. I hope to see everyone again on March 9th 2012, when we hold the Team Doubles competition.

Tuesday, January 24, 2012

Apache Karaf 2.2.5 Garbage Collection with IBM Java 6 on AIX 7.1

I've been experimenting with the Garbage Collection (GC) policies in IBM Java 6 on AIX 7.1 while using Apache Karaf 2.2.5, and thought I'd share some tips and links for anyone else following in my footsteps.

If you're wondering why one would play with the GC policy of the underlying jvm Karaf runs upon it stems from wanting to get a better idea of the throughput of applications and the overall system, and the pause times that are caused by garbage collection (wondering what "pause time" is? It's the time spent by the jvm cleaning up, or freeing, heap memory when an object can't be created using the available heap memory).

The version of Java I was testing has three options for garbage collection; gencon, optthruput, and subpool. Gencon is a combination of concurrent and generational GC, it's goal is to minimize the amount of time spent in any GC pause. Optthruput is the default GC policy, and is designed to deliver high through put at the cost of occasional GC pauses. Subpool is aimed at large SMP systems, and attempts to deliver better performance on those systems. Unfortunately the system I have access too is too small to try out subpool with any meaningful results, as such I kept to gencon and optthruput policies.

To setup Karaf to use specified garbage collection policies edit the KARAF_HOME/bin/karaf file as follows:

# grep for the setup defaults routine:
setupDefaults(){

# in the aix section try adding the highlighted text:
DEFAULT_JAVA_OPTS="-verbose:gc 
                   -Xverbosegclog:$KARAF_DATA/gc-log.txt 
                   -Xgcpolicy:gencon 
                   -Xverify:none -Xlp $DEFAULT_JAVA_OPTS"

When you start Karaf using the above Java options you will enable verbose garbage collection logging, sending generated data to KARAF_DATA/gc-log.txt. You can use this log file to review GC statistics as you tweak jvm options. The -Xgcpolicy flag is where you select the GC policy. When you change this value do not be surprised if you do not see this changed reflected in the Karaf info command's memory section. Use the generated verbose GC logs to perform your analysis.

Trying out gencon and the default optthruput policies I can see very different runtime behaviors in regards to frequency of GC and durations. Gencon ran more often, but for short periods of time, while optthruput ran infrequently but took longer when called. Given different application loads the characterization of GC runs could become important in providing optimal performance, the determination of "optimal" however is very subjective and will vary depending on the goals of your deployment.

Of course, changing the GC policy isn't the end of the story. There are a lot of parameters that can be tweaked which affect the size of the jvm heap in use, and the thresholds different GC policies use. I would recommend when testing to tweak one value at a time, then assessing it's impact. The online documentation (see below) will steer you in the right direction.

IBM JDK 6 Garbage Collection Links:

Overview of Java 6 Memory Management. Read this to learn about the garbage collector and allocator.

Detailed description of garbage collection. Dive deep into garbage collection.

Garbage Collector diagnostics. How to diagnose garbage collection. A must read.

Specifying garbage collection policy. Part of the running Java applications section in the IBM User Guide for Java v6 on 64-bit AIX.

Garbage Collector command-line options. List of all the garbage collector options (here there be dragons, careful tweaking these values).

Verbose garbage collection logging. Examples of how to analyze garbage collection logs.

Sunday, January 22, 2012

Live music and Apache Karaf 2.2.4

Apache Karaf 2.2.4 release wine.
Perhaps I should start a new tradition... During the build up to Apache Karaf 2.2.4 I was listening to Hawksley Workman albums while sipping on Quinta São João Batista Syrah Reserva 2007. Last Friday night I had the opportunity to see Hawksley perform live here in St John's at the Ship Pub.
The show, as expected, was awesome.  Alan Doyle (a well known local performer) joined Hawksley for several duets, transitioning Hawksleys' regular set into an interactive request and story session with the audience.
I think pairing Karaf releases with wines and music has started a strange side effect - while listening to certain songs all I can think of are particular JIRA issues, features, or release tasks. It's not disconcerting, however it does nerd up a Friday night out.
So getting back to the idea of starting new traditions; I like the idea of pairing wine and music to Karaf releases, I just think it should be expanded to trying to see the band/performer perform live too :) I think I just set myself a next level release management challenge - not to do releases while at live concerts - just to see each act play live once.
I wonder what do other release mangers do along these lines? Any traditions, challenges, or other fun things you do to mark your project release milestones? I'd like to hear about them in the comments section below.
Hawksley Workman, Alan Doyle 

Friday, January 20, 2012

Apache Karaf on IBM AIX 7.1!

Apache Karaf has supported runtimes on IBM AIX for quite some time, this however has been my first opportunity to personally try out Karaf on AIX 7.1.
Apache Maven and IBM Java versions.
I'm happy to report that Apache Karaf trunk (currently 3.0.0-snapshot) builds from source using IBM Java, and using GNU Tar I was able to easily extract a snapshot kit, and start Karaf. 
Apache Karaf console start up screen, and contents of info command output.
 I've been using IBM JDKs on Linux systems for the last few months, it's nice to have a full AIX environment to verify that the source and binaries are compatible. As I take time to test out tools, tweaks, and demo projects I'll be sure to post here my observations of Karaf on this platform and any best practices.

Tuesday, January 17, 2012

Mun CS Games Winter 2012 Singles Competition!

Each Fall and Winter at Memorial University's Computer Science Department an ACM rules programming competition is held for their students. These events have enjoyed much success due to the tireless work of many people on the CS Games committee. To help increase the popularity of the events I started donating prizes to the top placements in the competitions, and this Winters' Singles game is no different, so without more ado...
The prize chest contents for the Winter Semester 2012 CS Games (Singles) Competition.
  • The third place prize consists of a Mun market bag, a package of Bic Pens & Pump Pencils, a small CD binder, a USB card reader, a copy of 2600 Hacker Quarterly, and a Starbucks coffee set (Mug, Coffee beans, instant coffee sample, and shortbread cookies).
  • Second place prize consists of a Mun market bag, a package of Bic Pens & Pump Pencils, a large CD binder, a USB keyboard mini vaccum, a copy of 2600 Hacker Quarterly, and a Starbucks coffee set (Mug, Coffee beans, instant coffee sample, and shortbread cookies).
  • Finally, the first place prize consists of a Mun market bag, a package of Bic Pens & Pump Pencils, a Carnation variety Hot Chocolate pack (flavours: Rolo, Coffee Crisp, and After Eight), a copy of 2600 Hacker Quarterly, and a Starbucks coffee set (Mug, Coffee beans, instant coffee sample, and shortbread cookies).

Third Second First
The Winter 2012 CS Games (Singles) are tentatively scheduled for January 27th, 2012, in room EN2036 at 5:00pm to 7:30pm. There will be a sign up sheet in the CS department head office, please contact them if you're interested in competing - seats are limited (CS students only).

If you'd like to see sample of the kinds of programming challenges we've used during past competitions, please see http://www.cs.mun.ca/~harold/PC/.

Also, if you haven't already, please click the 'follow' button on the right hand column and be sure to follow my twitter feed @icbts. Best luck to all the students whom join in the competition.

Friday, January 13, 2012

Guest lecturing CS3716 Software Methodologies and CS3718 Programming in the Small at Memorial University Winter 2012

I've been asked to provide a guest lecture for CS3716 Software Methodologies and CS3718 Programming in the Small at Memorial University this winter 2012 semester.

I've been asked before to talk to Software Methodology classes, usually I talk about various subjects including a brief introduction to the Apache Way, the projects I've worked on, my views on technology (locally grown and in general), and project management (specifically talking about Apache Karaf).

The Programming in the Small class on the other hand will present an opportunity to dive directly into technical discussion and demo. As the focus of this course is object-oriented design, style, documentation, APIs, frameworks, and practices, I think that I have a challenge of not trying to fit too many Apache projects into an hour ;)

Friday, January 6, 2012

Departmental Seminar @ Memorial University: The Apache Way

Another seminar upcoming for the Department of Computer Science at Memorial University of Newfoundland

Jamie Goodyear

Apache Committer and PMC

The Apache Way

Department of Computer Science 
Thursday, January 12, 2012, 1:00 p.m., Room EN-2022

Abstract:

Community over code is a concept taken to heart in the Apache development model. It is believed that by providing a collaborative environment for disparate people with overlapping needs that they will produce useful software. In this paradigm ideas such as Merit, Openness, Pragmatism, Charity, and Respect are commonly put forward as reasons for its success in growing communities and releasing software.
In this talk, we introduce the Apache Software Foundation, and the concept of the Apache Way. Following this we perform a brief survey of recently published papers using Apache projects, then quickly discuss a variety of Apache projects that may be beneficial to students interested in pursuing scholarly research.