Thursday, December 29, 2011

A time to look back on 2011.

It's that time of the year again when we look back upon what was. I'd like to take a few moments and reflect on some of the geekier high lights of things I was involved with, and with that in mind head on towards 2012.
Happy 1 << 5 years!:

To kick off the year the Department of Computer Science at Memorial University of Newfoundland celebrated its 32 years. Staff, students, and friends all gathered at the campus bar Bitters for a scoff, share a few yarns, and single malt scotch. Good times were had by all.

Paper Published:

This was a long time in the making, my thesis was published in Springer Communications in Computer and Information Science under the publication for "Biomedical Engineering Systems and Technologies, Third International Joint Conference, BIOSTEC 2010, Valencia, Spain, January 20-23, 2010, Revised Selected Papers". Since then several students at my alma mater have continued on the project, adding new features, exploring aspects of the design.

The Winter CS Games:

Each winter semester at the Department of Computer Science of Memorial University of Newfoundland we hold a pair of programming competitions following ACM rules. One competition sets individual programmers on three algorithm challenges, with the top three scoring competitors being awarded a small prize. The second competition is for groups of two competitors, again with three algorithm challenges with corresponding prizes. I really enjoyed this series of games as we had a record number of competitors register for the competitions, and some really great prizes to hand out to the students.

Security B-Sides Conference St John's 2011:

About midway through the year the Security B-Sides conference St John's NL event was held. This event brought together near 140 security experts, industry professionals and others in their community to directly connect, share ideas, insights, and develop long lasting relationships while discussing some of the major IT security related topics pressing in today's environments.
The Fall CS Games:

Each fall semester at the Department of Computer Science of Memorial University of Newfoundland we hold a pair of programming competitions following ACM rules. One competition is for groups of three  competitors, in which the teams must solve three algorithm challenges. The highest scoring team moves on to the next round of the larger ACM games. The second competition sets individual programmers on three algorithm challenges, again with the top three scoring competitors being awarded a small prize.
The fall games had record attendance, straining our ability to handle so much interest from students. I really hope the trend continues into 2012.

Mentoring Apache Development:

As my blog's tittle suggests, I'm developing Open Source development here in Newfoundland. There really isn't a very large software development community around here, so if you want to talk about technologies, methodologies, and related practices you have to actively seek out others to share your interests. Luckily I have another active Apache Developer in town, but it's nice to expand the community.
To that end I've taken on another local developer and have started to help them become aquatinted with the Apache Way, starting with a focus on Apache Incubator Kalumet.

IGDA-NL Chapter:

The International Game Developer Association Newfoundland Chapter started up in ernest this past fall. I've been trying to help this group gain traction by getting the word out about their meetings and helping to bring attention to the accomplishments of some of their members. Earlier in the year I managed to arrange a few moments to talk with Celsius Studios and Binary Dawn about their experiences here in Newfoundland, these conversations can be viewed at Techvibes: Binary Dawn on WordUs2, and Celsius Studios on Red Nova.

Guest Lecturing:

I had two opportunities in 2011 to provide talks to CS 3716 Software Methodologies classes at Memorial University. Both experiences were fun, I focussed on 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).

Apache Karaf Releases:

Over the past year I've had the honor to head up the release efforts for ten Apache Karaf releases. During these events I'd make mention of my wine and music selection to accompany the release process. For those of you interested in taking a tastefully musical review of our past years' releases I have put together the below table:

Version
Wine
Music
2.2.5 Maison Sichel Bordeaux 2009 City and Colour
2.2.4 Quinta São João Batista Syrah Reserva 2007 Hawksley Workman
2.2.3 Chateau Roc de Bernon Puisseguin-Saint-Emilion 2006 Joel Plaskett
2.2.2 Terre Dei Volsci Velletri Rosso Riserva 2004 Wintersleep
2.2.1 Carpineto Chianti Castaldo 2008 Hey Rossetta
2.2.0 Castello D'Albola Chianti Classico 2007 Our Lady Peace
2.1.6 François Pélissié Croix du Mayne Cahors 2008 Wreckhouse International Jazz and Blues Festival
2.1.5 Jacob's Creek Merlot 2007 The Novaks
2.1.4 Ricossa Antica Casa Barbera D'asti 2009 Metric
2.1.3 Rosemount Cabernet Sauvignon 2008 Tegan and Sara

So what do I see for 2012?

Good question!

For Apache Karaf I see...
  • The highly anticipated Apache Karaf 3.0.0 release should come to reality :)
  • Releases of Apache Karaf's new sub projects.
  • Apache Karaf 2.2.x and 3.0.x patch releases should come out on a regular basis.
  • New Apache Karaf 2.3.x and 3.1.x branches may make their appearances.
In the local Newfoundland tech circles I follow, I see...
  • Continued CS Games in the Winter and Fall 2012 semesters.
  • Growth of the IGDA-NL Chapter (more meetings and events).
  • More speaking opportunities at Mun CS Department via their Departmental Seminars and Guest Lecturing.
I know nothing earth shaking is listed above, but in context the above represents a lot of efforts, community growth, and optimism for the future :)

Before I end this rambling post, I'd like to share the below video for Bandages by Hey Rosetta! It's my favorite song by local talent for 2011, and its' video features many beautiful scenes of Newfoundland. While enjoying the music I'm opening a bottle of Auk Island Winery's Nautica (Blueberry Shiraz).

Music, Wine, Community, and Open Source Software Development in Newfoundland - 2011 was great, here's to 2012 :)

Sunday, December 25, 2011

Apache Karaf 2.2.5 Released!

The Apache Karaf team is pleased to announce the availability of Apache Karaf 2.2.5.

This release of Apache Karaf is based off of the 2.2.x series branch, representing an update to Apache Karaf 2.2.4. It contains bug fixes identified in the prior release, and introduces improvements including; multiple JAAS support improvements, better support for Linux systems with certain versions of libc, SCP support, and demos for extending Karaf's console commands and using Karaf Archives (KARs). Several dependencies were also updated, bringing Pax Web to version 1.0.8, Jetty to 7.5.4.v20111024, and Jasypt to 1.8.

To help make the transition from Apache Karaf 2.2.0/2.2.1/2.2.2/2.2.3/2.2.4 to 2.2.5 easier we've put together a table of changed dependencies which you can view here: http://karaf.apache.org/index/documentation/karaf-dependencies/karaf-deps-2.2.x.html

For more information please see the release notes.

As discussed in my prior Apache Karaf 2.2.5 preparation post, I enjoyed listening to City and Colour albums throughout the release process and was delighted to try the Maison Sichel Bordeaux 2009 once the release was complete.

Now that this release is out, I plan to relax and spend time with family and friends for the holidays. This past year has been a wonderful time collaborating with the Apache community, I can't wait for 2012 to begin :)

Thursday, December 22, 2011

Departmental Seminar @ Memorial University: Build Order Optimization in StarCraft

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


David Churchill

PhD Candidate
Department of Computer Science
University of Alberta

Build Order Optimization in StarCraft

Department of Computer Science 
Tuesday, January 3, 2012, 11:00 a.m., Room EN-2022

Abstract

In recent years, real-time strategy (RTS) games have gained interest in the AI research community for their multitude of challenging subproblems – such as collaborative pathfinding, effective resource allocation and unit targeting, to name a few. In this paper we consider the build order problem in RTS games in which we need to find concurrent action sequences that, constrained by unit dependencies and resource availability, create a certain number of units and structures in the shortest possible time span. We present abstractions and heuristics that speed up the search for approximative solutions considerably in the game of StarCraft, and show the efficacy of our method by comparing its real-time performance with that of professional StarCraft players.

Wednesday, December 14, 2011

A brief introduction to Apache Karaf Archives (Kars)

A relatively new feature to Apache Karaf 2.2.x is the Karaf Archive (Kar). Its purpose is to help make packaging and deploying Karaf features an easier process. A Kar accomplishes this aim by packaging all of a features' bundles and dependencies inside of archive file, which when copied into Karaf's deploy folder will be extracted into a local repo, and any included features files are then automatically registered with the runtime. A feature's bundles, and dependencies can be thought as one  artifact to act upon.

Sounds good, so what are the benefits?

This is a large improvement over having to individually copy jars into the local system repo then reference them via a separate features xml file (generally calling features:addUrl). Production environments benefit as an application deployed as a Kar should not require Maven based resolution at runtime since all its dependencies are already provided. Further more, components built as Kars can be easily referenced as Maven dependencies when building larger solutions (just add Kars as dependencies).

Cool, so what's next?

We've documented using Karaf Archives in the users guide, and will as of version 2.2.5 include a simple demo.

Let's look a little closer at building the Kar demo.

There are two essential components to the Kar demo; the pom file which calls the features-maven-plugin (karaf-maven-plugin on Karaf 3.x), and the features xml file describing the content of the Kar to be generated.

Lets have a look at a sample pom file:

In Apache Karaf version 2.2.x the features-maven-plugin is used to generate Kars via the create-kar goal. When executed it will read all features specified in the features descriptor, then for each feature it'll resolve the bundles defined in the feature, then all bundles are packaged into the Kar archive.

    <groupId>my.groupId</groupId>
    <artifactId>my-kar</artifactId>
    <version>1.0</version>
    <packaging>pom</packaging>

    <dependencies>
        <dependency>
            <groupId>org.apache.servicemix.bundles</groupId>
            <artifactId>org.apache.servicemix.bundles.commons-collections</artifactId>
            <version>3.2.1_1</version>
            <scope>runtime</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.karaf.tooling</groupId>
                <artifactId>features-maven-plugin</artifactId>
                <version>2.2.5</version>
                <executions>
                    <execution>
                        <id>create-kar</id>
                        <goals>
                            <goal>create-kar</goal>
                        </goals>
                        <configuration>
          <featuresFile>${project.basedir}src/main/resources/features.xml</featuresFile>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

Lets have a look at a sample features xml file:

A features descriptor is a simple xml file that contains the feature's name, version, and list of bundles it depends upon. In this sample the Servicemix commons-collections bundle version 3.2.1_1 is specified.

<?xml version="1.0" encoding="UTF-8"?>
<features>
    <feature name="my-kar" version="1.0">
 <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-collections/3.2.1_1</bundle>
    </feature>
</features>

To build the Kar file all that is required is to execute mvn install. The plugin will create the Kar file in the target build directory.

To deploy the KAR the user need only copy the resultant KAR file to the KARAF_HOME/deploy folder. Please note that the Kar deployer is a core part of Karaf, so no additional features need to be installed to use Kars.

You can now see your feature available:

  karaf@root> feature:list | grep -i my-kar
  [installed] [1.0             ] my-kar                        repo-0

Now you can use any commands available on features:

  karaf@root> feature:info my-kar
  Feature my-kar 1.0
  Feature has no configuration
  Feature has no configuration files
  Feature has no dependencies.
  Feature contains followed bundles:
    mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-collections/3.2.1_1


I hope you found the above introduction to Apache Karaf Kars informative. If you have any questions please visit the documentation, see the demo, contact the Karaf user email list, or leave it in comments section below :)