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 :)

Wednesday, November 30, 2011

Developed Right Here: IGDA NL Chapter Demo Night

The Newfoundland chapter of the International Game Developer Association held a demo night on November 29, 2011, with approximately two dozen attendees packing the Computer Science seminar room at Memorial University, listening to three local video game studios show their latest efforts.
WordUs2
Roddie Kieley, of Binary Dawn, discussed the evolution of his company's games. They've touched on several genres including space shooters, word games, a drinking entertainment game - all on iOS devices. Their next tittle however would be a break away from that platform.

Although early in development, Roddie outlined some of the technology going in to their next game, of particular interest to myself was the use of Apache Maven to build a Flash based application. Unfortunately no playable demo was available to be shown.

Concluding his presentation Roddie answered several questions from the audience spanning his experiences with various tool chains, frameworks, and game platforms.

Colin Walsh, of Celsius Game Studios, took the audience on a tour of his game studios' first two tittles, then provided an early developer build demonstration of his up coming game Drifter.

The procedurally generated galaxy that Celsius is building into Drifter (10,000 star systems) was very impressive to see! I fully expect to hear great things about this game when it hits the market (see demo video below).
Chromodyne Red Nova Drifter

Following Celsius Game Studios was Best Boy Media Inc, represented by Dylan Fries.

Two game demos were presented, one for Mickey's Farm (a preschool child oriented game), and an augmented reality Christmas tree decorating game Yule Tree. Despite their younger target audience these games represented some of the challenges developers encounter when producing games for younger users. Color pallets, user interface design, and the technical issues of being able to provide large lively environments with in the platform resource budgets available all presented unique challenge. As well, designing an Augmented Reality App for a general audience who often have never seen AR before highlighted the importance of iterative testing and user feedback. Mickeys Farm is playable online at http://mickeysfarm.ca/ and Yule Tree is available for iOS in the iTunes app store now!
Mickey's FarmYule Tree
After all of the presentations the group started discussing the local video game industry in general, touching on topics from where to find classes on animation, graphics engines, and development, to the kind of software packages / tools the presenting companies used to make their games.

I think this was a very successful meeting for the IGDA Newfoundland chapter. It was a treat to see the kind of video game development talent / industry we're growing here.

Tuesday, November 29, 2011

Looking for an itch to scratch? How about contributing to Apache Karaf?

The Apache Karaf 3.0 release candidate is approaching, it's a good time to try to get a patch in before we cut our first RC :)

Reviewing our JIRA entries currently slated for the 3.0.0 release, there are several issues that would make good targets for new contributors to step in and try their hand submitting a patch. I've list below several of these issues in the hope that a new contributor that's been sitting on fence not knowing where to jump in may pick up an issue and start their journey into Apache development :

Console doesn't like it when the console window is too small - no line wrapping for commands:
https://issues.apache.org/jira/browse/KARAF-479

Better support for Maven Proxies:
https://issues.apache.org/jira/browse/KARAF-846

Tab completion on path when installing bundles:
https://issues.apache.org/jira/browse/KARAF-413

Backspace no longer works in Putty after using 'connect' command to connect to other instance, and commands are printed in only 2 columns:
https://issues.apache.org/jira/browse/KARAF-536

Improve security docs with respect to roles policies:
https://issues.apache.org/jira/browse/KARAF-783

Thursday, November 24, 2011

Winter has arrived.

Winter has arrived here on the Avalon peninsula of Newfoundland. I thought I'd share a few photos.
Looking down the road. Snow blowers are a live saver. My cat has the right idea.
One of my favorite shots of the day can be seen here: Metro bus catching tow from a passing by snow plow.

Now that I have my driveway cleared I'm back to looking over issues for the Apache Karaf 2.2.5 RC. We'll be bumping out some issues to Karaf 2.2.6, while focusing our efforts on the remaining items. The community appears to be making nice forward progress :)

Departmental Seminar @ Memorial University: A Complexity Perspective on Adapting Reactive Architectures

Another seminar upcoming for the Department of Computer Science at Memorial University of Newfoundland. This one is being present by a good friend of mine Dr Todd Wareham (he's one of the core people behind the local CS Games held several times each semester at Memorial).



Dr.  Todd Wareham
(CS Mun)

Educating Genghis:
A Complexity Perspective on Adapting Reactive Architectures

Department of Computer Science
Thursday, December 1, 2011, 1:00 pm., Room EN-2022

Abstract

The problem of adapting an existing reactive architecture to meet new task constraints has applications in a wide variety of fields, including cognitive robotics, evolutionary robotics, and cognitive neuroscience. Such adaptation can range from simple reconfiguration of existing layers and the linkages between them to the the recruitment of new layers (either on hand or  custom-designed). Though there are a number of proof-of-concept systems  implementing such adaptation, it is not obvious if any algorithm can perform efficient adaptation in general or, if not, under which conditions (if any) such efficient adaptation might be possible.

In this talk, we present the initial results of a computational complexity analysis of reactive adaptation carried out to answer these two questions. Our main result is that even for a rather simple world and a simple task, adapting a subsumption reactive architecture to perform that task in a given world is NP-hard. Additional parameterized results in turn delimit those conditions under which efficient adaptation is possible, e.g., we show that architectures with limited sensory and perceptual abilities are efficiently adaptable.

(Work done in collaborations with Pim Haselager, Johan Kwisthout, and Iris van Rooij (Radboud University Nijmegen))

Tuesday, November 22, 2011

Preparing for Apache Karaf 2.2.5

The fifth maintenance release of the Apache Karaf 2.2.x branch has entered the planning phase, as such I'm preparing for the release management role.

To prepare I've selected a bottle of Maison Sichel Bordeaux 2009 to decant while listening to some City and Colour albums. As it has been a common thread on my last few 'preparing for Apache Karaf' posts, the 3.0.0 release is still underway in preparation - the community is committed to seeing Karaf 3.0 being feature complete and polished before it is raised to production status.

Current high lights of this patch include multiple JAAS support improvements, and better support for Linux systems with certain versions of libc. This kit will also include new features such as SCP support, and a demo for extending Karaf's console commands.

The wine will of course only be sampled after being gave proper time to breath in its container, after the first release candidate has be up loaded for voting (see our release guide for more details on our process).

Unfortunately I can't share the wine with you, but I can share a few links to some City and Colour videos.



I'm looking forward to starting the 2.2.5 release process. I'll be posting updates to our Twitter stream (#karaf) and on our IRC channel (irc.codehaus.org #karaf).

Saturday, November 19, 2011

Departmental Seminar @ Memorial University: Towards Engineering Processes for Web Service Repositories.

Thought I'd post below the announcement for the upcoming Departmental Seminar at Memorial University entitled "Towards Engineering Processes for Web Service Repositories". Sounds like an interesting talk for anyone working with SOA technologies.


Towards Engineering Processes for Web Service Repositories

Dr.  Adrian Fiech
(CS, MUN)

Department of Computer Science
Thursday, December 8th, 2011, 1:00 pm., Room EN-2022

Abstract:

Service-oriented Software Engineering embraces the construction of software systems from available modules that can be acquired from service providers and assembled into a complete system. Web services are particularly suitable to this approach.

The process of crafting successful web service repositories is complex and needs to be addressed with a rigor reminiscent of software engineering processes. We are working on creation of a comprehensive process framework that provides a set of practices and tools for web service repository design, configuration, testing, implementation and management.

We begin with practical case studies, which investigate and highlight promising problem domains that are suitable for (primarily commercial) repository development. Next, we design and implement prototype web service repositories for the most encouraging cases. The prototype repositories shall afford simple configuration, powerful query answering system and the support for diverse business models. Subsequently we summarize, discuss and evaluate the processes we used in our prototype repository design/implementations as well as approaches used by others.

Thursday, November 17, 2011

Micro-Hackathons. This is what happens when two or more committers are in the same space.

From time to time I like to post photos of what we're having for lunch when Jon and I have a little Micro-Hackathon. Today's menu consisted of Curried Pork, Lentils, Chickpeas, Basmati Rice, and Pappadums.
Finishing our lunch Jon suggested a round of cards... needless to say poker is now ruined :P
FuseSource EIP playing cards.