« August 2007 | Main | November 2007 »

October 28, 2007

CORM alpha 02 release!

Mea Culpa time.

It's been a long time coming. There's no denying that the CORM project has not been healthy or active in the last year. But two weeks ago a couple of important things changed. First, I finished setting up my development server with SVN running on it, so I can do software development for Open Source or proprietary code with the same setup. This has been a great development, and it literally triggered an explosion of activity on the CORM project. I've been able to add Catharine to the project as a fully-fledged commiter, and with her help I cranked out a MAJOR upgrade to the old CORM codebase.

After two days of solid development, I'm happy to have released the corm-product and corm-money packages, and de-facto support for corm-quantity by way of the JScience.org 4.3.1 distribution.

JAR files, Source code, and full distributions including API documentation can be found at the CORM Downloads page.

Major Developments

New Developers

CORM welcomes the addition of Catharine Tierney, our newest developer (and first developer who isn't me!).

Interface Free

After some consideration, we decided to return to a non-interface-centric implementation of the data objects. The CORM project strives to create a purely passive data storage model for commercial applications, so why use interfaces? They needlessly complicate the O/R mappings later on, and don't abstract any logical implementation. So we got rid of them. Thanks to Roger Mori and Dain Sundstrom for their feedback on this front.

Quantity Archetype Pattern

With the adoption of JScience.org, we now have a full de-facto implementation of the Quantity Archetype Pattern that is not only more well developed than the rest of our archetype patterns, its the JSR-275 reference implementation for measurement standards in Java! This discovery kicked off a whirlwind of development over the weekend, and led to the quick development of the Money and Product archetype patterns.

Product Archetype Pattern

The alpha-02 release includes our first stab at the Product Archetype Pattern, though there are very important changes from the Arlow-Neustadt architecture. Most importantly, we integrated with the JScience.org 4.3.1 libraries, and made ProductType a type of Quantity, and ProductInstance a type of Unit. This allows us to write code like the following:

   ProductType goldType = new ProductType();
   goldType.setName("gold");
   ProductInstance gold = new ProductInstance(goldType);
   Amount goldAmount = Amount.valueOf(100, gold);

We'll return to this later in the Money Archetype Pattern, as it really simplifies payments and gives us powerful means to treat products in a very similar manner to money. This in turn opens up the basis for highly complex barter and trade systems!

We also separated references to Price from the ProductInstance objects, in order to allow inversion of control. Prices should be governed by rules and complex interaction with the environment. Especially in this age of high inflation, there's no reason for a product instance to have a concept of its own price. So, we inverted control and separated those concerns. Our new price model is very robust and also integrates with the JScience.org economics model.

Money Archetype Pattern

In line with our new addition of the Product Archetype Pattern, we are also very proud to provide a full implementation of the Money Archetype Pattern. Our money pattern breaks with Arlow-Neustadt in that we have abandoned the portions of the pattern which should be implemented in a rule engine, and in that we take full advantage of the JScience.org economics API. This, along with the use of Java generics and careful integration with our Product Archetype Pattern, lets us specify Payments of different types. You can get a Payment or a Payment, and be discriminating about what methods of payment you accept.

100% Unit Test Coverage

With the exception of one method in ProductInstance, we have (as always) 100% unit test coverage. These tests serve both as documentation and as example code for how our trickier parts of the model work. A great example is with PaymentMethod--we added the ability to distinguish between payment in money and payment in goods or other measurable quantities. Examples of how to use this are all in the unit tests.

Looking Ahead

Immediate future plans involve making every archetype implement serializable, and I will also be looking into publishing JPA bindings for all three archetype patterns, as well as bindings for JScience.org. There is also presently no support for conversion of product instances, but this has been a pretty good release cycle.

October 24, 2007

Technology on campus speeds emergency response

I was just speaking with a friend of mine named Eric about this week's bomb threat on campus. He was remarking how the University's technological improvements on emergency response seem to have made them faster than the physical response procedures that the Minneapolis Police Department.

Earlier this week, while Eric was in class in Blegen Hall, a friend of his showed him an e-mail she'd received alerting her to the bomb threat. He immediately opened up a web browser and went to the U of MN home page, which had more information about the threat. They showed it to their professor, who immediately excused class.

The students got wind of the emergency and out of the building before they saw any police officers, and before someone had to come in and interrupt the class.

Coupled with this summer's upgrades to the emergency voicemail notifications, I'd say that the Office of Information Technology is ahead of the curve. Hopefully I won't get any more calls from MN Daily reporters on the subject--folks who need more information should call (612) 301-HELP and ask to speak to a manager.

October 05, 2007

Superior Hiking Trail - Plan for 10/05/07 - 10/07/07

This weekend I'm backpacking along the Superior Hiking Trail in Northern Minnesota. I decided to log my travel plans because of inclement weather. Hopefully the late season and hard weather will discourage most of the traffic so we can find a place to pitch our camp. We have food for 5 days and a renewable supply of water. We have cooking fuel for many days, as well as plentiful wood in the state forest. We are each carrying utility knives and extra clothing. We have waterproof footwear, rain coats, a 4 season tent and 3 season sleeping bags. First aid / last aid supplies are well stocked, but optimistic. I have a tomahawk and 100ft of parachute cord in case we need to make splints or the like. We will never be far from County Road 7 or Highway 61, and expect smooth sailing.

Friday Evening: 10/05

We estimate heavy thunder storms tonight, and the sun sets at 6:37PM, well before we reach the spur trail. So we will be hiking under full pack in the dark in the rain for the first leg of the trip.

  • Leave Twin Cities at 5PM
  • Stop in Cloquet for food at 7:30 PM
  • Arrive at Finland spur trail off of County Road 7 at 8:30 PM
  • Set out North on Sonju Trail at 8:45 PM
  • Scout out backcountry sites 1 & 2 by 10:00 PM. If none found, press on to Multi-group site at Sonju Lake, ETA 11:00PM

Saturday, 10/06/07

We expect heavy to moderate thunderstorms all day long on Saturday, and will hike in the rain during this time.

  • Break camp at 7:30 AM. Eat and be on trail by 8:15
  • Arrive at Benson Lake by 9:30
  • Press on to Caribou State Wayside by mid-day.
  • Pitch camp early, either in Multi-group site near Caribou or in back-country sites en route to Two Island River

Sunday, 10/07/07

We expect thundershowers all day long on Sunday as well.

  • Break camp at 7:30 AM, eat and be on trail by 8:15
  • Retrace our path to Caribou, across the Manitou River, past Bensen and Sonjou Lakes, Egge Lake, and to spur trail at Finland. ETA 5PM
  • Stop in Cloquet for food at 6:30 PM
  • Return to Minneapolis at 9:00 PM
The views and opinions expressed in this page are strictly those of the page author. The contents of this page have not been reviewed or approved by the University of Minnesota.