Peter Bell - Application Generation

TIme for a change

posted: 17 Feb 2011

Wow - it really has been a while since I've updated this blog. The problem is that I have a bunch of old content here that I don't want to kill, but I also want to pull together application generation and groovy content from two other blogs I have, centralize with a single blog and also create a new site to make it easy to keep up with my tweets, conference presentations and various publications by category. Oh, and of course I'm locked with paying client work. Well, I *will* get this fixed up by the end of March. In the meantime, apologies for the lack of meaningful web presence!

SPA Conference Coming Up Soon ¬タモ Not to late to b

posted: 09 Apr 2010

See the posting on my new blog re: SPA Conference Coming Up Soon – Not to late to book!.

Do you want to see this in LightWire?

posted: 08 Mar 2010

See my new blog for details . . .

Presenting on ¬タワSpring Roo and Code Generation¬タン

posted: 08 Mar 2010

See my new blog for the details!

Co-presenting tutorial on oAW and DSLs at SPA Conf

posted: 14 Jan 2010

See my new blog for the details!

Critical LightWire Error in Setter Injection for T

posted: 09 Jan 2010

LightWire is a lightweight Dependency Injection engine for CFML that I wrote a while back and is being used by a number of developers and projects. Many thanks to Micky Dionisio for finding and documenting a critical error in LightWire. I saw the posting yesterday, but didn’t get a chance to replicate the error and post a patch until this morning. This posting clarifies what the error is and how to patch it.

Presenting on Agile and Productivity at cf.Objecti

posted: 07 Jan 2010

I'll be presenting two topics on agile and productivity at cf.Objective() this year. Check out my new blog for the details!

2009 - A Year in Conferences and Publications

posted: 31 Dec 2009

Here's a link to my new blog where I've just posted a summary of what I ended up doing with 2009 and some of the things I'm planning for 2010!

First Article Published in InfoQ

posted: 22 Dec 2009

w00t I have just had my first article published in InfoQ :-) It's on Domain Specific Language Evolution.

Presenting on DSL Design at SPA2010

posted: 18 Dec 2009

Again, a little late, but I'm happy to announce that I will be presenting at the Software Practices Advancement conference held by the British Computer Society for the third year in a row. I'll be presenting a workshop on "What makes a good Domain Specific Language?".

New ColdBox Book Available

posted: 18 Dec 2009

I know I'm a little late with this, but I just wanted to mention that Luis Majano's book "The Definitive Guide to the ColdBox Platform" is now available. I'm also honored that Luis asked me to write the forward, so look out for me just after the contents page :-)

Code Generation 2010 - Call for Speakers Ends Soon

posted: 18 Dec 2009

Just a reminder that the call for speakers for Code Generation 2010 ends on January 15th. It's one of my favorite conferences of the year and I'd thoroughly recommend it for anyone with an interest in Domain Specific Modeling or Code Generation. If you have an area of research or a real world case study, why not propose a session? Attendance is free for speakers and the attendees are always interesting, knowledgeable and engaging . . . Oh, also remember my blog is moving, so you should update your feed readers if you're still seeing this site.

CF Template - CFML for Code Generation

posted: 03 Dec 2009

I'm doing a project right now which requires me to generate code for a Coldbox app from a collection of DSLs, so I'm updating/upgrading all of my code generation tools (for the last couple of years I've spent most of my time using runtime interpretation of the DSLs instead). I just wanted to point out that CF template is a really useful little project that might be helpful if you need to do any code generation using ColdFusion. See more at my new blog.

RIA Unleashed Deck

posted: 16 Nov 2009

Here's a link to my new blog with my RIA Unleashed deck and some thoughts on RAD OO.

OT: Vote for an animal shelter

posted: 06 Nov 2009

Jared (of cf.Objective() fame) mentioned that the animal shelter he got his two dogs from has a chance to win some funding if they get enough votes. If anyone could vote for them it'd be appreciated . . .

The Practical Product Lines Conference - a Quick R

posted: 02 Nov 2009

Please see my new blog for a quick review of the PPL 2009 conference. And don't forget to update your feed readers to point to

Comment on old blog postings here

posted: 02 Nov 2009

I've added a place on the new blog for you to comment on any old postings - I'll copy the comments across to the old site manually if they add something to the discussion so the historic pages continue to be valuable.

Welcome to my new blog

posted: 02 Nov 2009

See this entry on my new blog.

Practical Product Lines: Presentation

posted: 02 Nov 2009

Please check out new blog for a copy of my presentation from the PPL conference on the SystemsForge product line.

Stopping commenting, moving blogs . . .

posted: 02 Nov 2009

After deleting close to 10,000 spam comments over the last couple of months, I've disabled commenting and am just going to port to wordpress. The site will be and it should be live later today. I'll cross post until the end of the year, I'll keep the old blog running indefinitely for historic content, and I'll add pointers to the new site for anyone who wants to comment on old entries. I know I could upgrade to the latest version of BlogCFC, but it makes more sense to let wordpress take care of anything and just pay a few dollars for a hosted solution.

Free One Day Conference Pass - Practical Product L

posted: 15 Oct 2009

If you are in or near Amsterdam and would like to attend the inaugural Practical Product Lines conference, drop me a line before end of business tomorrow and I should be able to get you a pass. It can be for either the 20th or the 21st, but why *wouldn't* you come on the Tuesday and catch my case study?! I'm really excited about the conference. For anyone involved in building multiple applications which have commonalities between them, software product lines can provide huge benefits in terms of efficiently reusing everything from specifications to workflows to contracts to tests and code. It's great to see a practitioner focused conference and the lineup of speakers suggests it's going to be a great experience!

Program Now Available for DSM Workshop at ooPSLA

posted: 15 Oct 2009

I'm lucky enough to be on the program committee for the Domain Specific Modeling workshop at ooPSLA and I just wanted to publicize the fact that the program is now available. Unfortunately I won't be able to make ooPSLA this year, but given that next year is the 10th anniversary of the DSM workshop, I'll make sure to attend. If you can get to Orlando later this month I'd thorough recommend attending the conference. I presented a couple of papers at ooPSLA in 2007 in Montreal and it was a treat getting to meet so many of the top professionals in the world.

Why Not Present at the SPA Conference Next Year?

posted: 15 Oct 2009

After presenting at the Software Practices Advancement conference in London for the last couple of years, I'm now honored to have been added to the program review committee to review potential submissions for the conference next year. The submissions deadline is Monday October 26th and I'd strongly recommend proposing a session. It's an amazing conference where people from across the programming community working in different fields and using different language look at how they can improve the state of the art and it's certainly one of my favorite conferences of the year. Hopefully I'll see you there!

RIA Unleashed Discount Code

posted: 15 Oct 2009

For any reason if you haven't signed up yet, use the discount code "PBELL" and get $10 off admission. It's going to be a great conference and I'll be presenting an updated RAD OO presentation showing off some of the latest LightBase framework and some generic LightDSL code that I'm going to release to make DSL work easier in ColdFusion. Why not sign up now?! Hopefully I'll see you in Boston on Friday November 13th . . .

Balancing Blogging with Working

posted: 15 Oct 2009

Anyone who happened to come by over the last few weeks would have seen the dreaded "there are no blog entries that match" message which basically meant I hadn't blogged since August :( I've been pretty busy re-writing lightbase, dealing with my regular clients and handling a really large consulting project. Usually because I generate most of my code I don't have to work *that* hard to make a good living, but taking on the consulting project has meant I've had to focus almost exclusively on billable work at the expense of blogging. However, I've been working with some great developers and doing some really interesting work on the framework, so I was getting my learning fix just from the work. I've also been doing a lot of work on tracking my time, using pomodoros both to improve focus and to make it easier to track the profitability of the various projects I work on. However, for a while I was really focused on maximizing the billable hours per week. What I'm now going to try is adding some other non-billable targets such as at least 4-5 pomodoro of blogging a week to make sure I keep a balance with the work. It'll be interesting to see how it works out.

Transformation Based MetaModeling (what to do when

posted: 16 Sep 2009

Generally the biggest issue with metamodeling is DSL evolution. You have a collection of DSLs that you use for building applications. However, you find an case where your DSL is not sufficiently expressive. Perhaps you have an attribute/property that really needs to be a class/element/concept with its own sub-properties. However, you already have lots of statements in the DSL, so what do you do? Generally there are three approaches . . . [More]

Creating a Database Schema for DSM

posted: 16 Sep 2009

We have a meta-metamodel and a sample metamodel. Let's start by creating some tables for storing them and then look at how we could generalize the generation of tables for each metamodel to contain model statements . . . [More]

DSM/SPL: Getting Practical - A Sample Metamodel

posted: 16 Sep 2009

So, I've decided to continue (at least for now) with a database for storing my meta models and models using a meta-metamodel based on a subset of ecore from the EMF project. The next step is to come up with some example metamodels to see what we'd need to do to implement them and to create a storage mechanism for both the metamodels and their associated models. So I'm going to start with a set of simplistic languages for generating web applications using a subset of what I currently have in SystemsForge . . . [More]

DSM/SPL: Concrete Syntaxes for Model Reuse

posted: 16 Sep 2009

There are lots of great tools for domain specific modeling - particularly the openArchitectureWare toolkit within Eclipse, MetaEdit+ and the rapidly improving DSL tools from Microsoft). There are also promising language workbenches from both a prominent ex Microsofter (I'll start linking to them again when they actually ship a public beta :-) ) and the MPS from JetBrains (the guys behind IntelliJ and Resharper) which was presented at Code Generation the other week in Cambridge. However, when you start to look at support for re-use of models and model statements, none of the existing tools are designed out of the box to support efficient model reuse across projects. This posting will look at various concrete syntaxes for model storage and editing and their suitability for efficient model and model statement reuse . . . [More]

DSM/SPL: What is a Model Statement?

posted: 16 Sep 2009

I seem to have a worrying habit of making up my own terms. Whether it's the "Iterating Business Object" in the CFML world, "mixin injection" in LightWire or now "model statement" which seemed to confuse people who know a lot more about DSM and SPLs than I do (which suggests it's not a common term in the industry). So, I guess I need to explain my term as I'm yet to find a better word for it and it's a very important concept when you try to reuse models across a software product line . . . [More]

Domain Specific Modeling: Choosing a Meta-metamode

posted: 16 Sep 2009

If you want to develop external Domain Specific Languages, one of the first choices you need to make - and understand - is what meta-metamodel you're going to use and how that's going to grow with your needs. Most people start developing external DSLs by choosing a concrete syntax and/or toolkit (database tables, XML, Xtext, MetaEdit+, Microsoft DSL Tools, etc.) and that isn't always the best approach . . . (If you're not sure what I'm talking about when I mention meta-metamodels, you might want to look here. ) [More]

Funding a Software Product Line

posted: 16 Sep 2009

There's pretty broad consensus and plenty of studies showing substantial business benefits from developing a software product line, but the question is usually how to fund the development . . . [More]

What's a Software Product Line - and Why Should I

posted: 16 Sep 2009

A Software Product Line (SPL) is a set of resources that allow for the building of a set of similar applications more efficiently. Generally the ROI for a SPL is 3-4 projects. In addition, it's usually best to build a SPL around a known domain - if you haven't built at least a couple of applications in a particular domain it's unlikely that you'll make good decisions when designing the spl. Because of this, you need to be working in a domain where you plan on building at least 5-8 projects in the first year or two. What's a Domain?
When I speak to a lot of developers, they often believe that they wouldn't profit from a software product lime because "every application I build is different". In my experience, as long as you build at least 5-8 applications a year (probably in the same programming language and on the same general stack - but not necessarily) you can probably find enough similarities to make it worthwhile to formalize the reuse of assets. If all you do is build e-commerce applications or insurance quotation applications, you have a pretty well constrained vertical (business) domain (e-commerce or insurance respectively). If you build lots of different types of applications but they're all for the iPhone or are all web applications using Spring and Hibernate (or Railo, ColdBox, ColdSpring and Transfer), you'll probably find enough similarities within the horzontal (technical) domain. If you use different languages and/or frameworks, constructing an effiient horizontal spl may be more difficult as you'll have multiple target platforms and you're going to have to ensure there is enough conceptual similarity between the technical domains to be able to reuse your models. For example, it's possible to describe a generic UI DSL for generating the UI for both Flex and HTML web applications, but it's a non-trivial problem and depending on the level of customization required it may not be worth the effort. Similarly, while Seam, Seaside, Django and Ruby on Rails are all frameworks for building web applications, creating a single meaningful and useful set of abstractions which would allow you to generate to all of those target platforms would be unlikely to provide a ROI. What's in it for Me?'
The benefits of software product lines is that they've been shown to consistently cut the cost of developing similar applications - by anything from 20% to 80% or more. There are plenty of cases where businesses are building applications using a software product line in a small fraction of the time it used to take, giving them a substantial economic advantage when developing projects. Why Does it Work?
There have been so many silver bullets proposed over the year. At one time everyone seemed to think that all you needed was to use classes or (later) components and the re-use problem would be magicaly solved. Unfortunately there is no perfect generalized solution to the reuse problem. Classes are too granular a level of reuse and often require too much knowledge of their internals to customize them effectively. Component based development is great for a relatively small number of projects, but as the number of projects (and customizations) grows, the complexity of the component interfaes and/or configuration requirements makes the components unwieldy and hard to maintain. Software product lines are not a silver bullet, but by providing a bigger, more powerful toolkit for customizing and configuring applications, they allow for the development of more complex product families while still keeping the complexiy of the system under control. However, before you can profit from a software product line, you need to build it. And funding that effort is the first challenge - and the topic of the next posting in this series . . . Want to know more about the practical application of software product lines? There is a new conference devoted to the topic - from the team who brought you Code Generation. Check it out!

Models, Meta Models and Meta-Meta Models, oh My!

posted: 16 Sep 2009

When you first start to get involved with Domain Specific Modeling, some of the terminology can get confusing (especially when it isn't used consistently). One of the areas that seems to confuse many people is the difference between models, meta-models and meta-meta models. This posting shows examples of each and at the same time works up a usable meta-meta model for simple code generation. [More]

RIA Adventure - A conference on a Cruise Ship

posted: 16 Sep 2009

Joshua Cyr has just announced the next RIA Adventure conference/cruise. It'll be December 6th - 13th in the Western Caribbean. It's a conference on a cruise ship for people interested in the future of ColdFusion, Flex, AIR, AJAX and Mobile Development. From everything I've heard, the last one rocked, so you really should check it out!

KCWebCore Presentation - Slides

posted: 16 Sep 2009

Just finished a presentation to the Kansas City user groups. Here is the deck, and I'll be releasing some core code for playing with some time next week! It's not my whole framework, but it's enough for anyone to start creating and implementing DSLs in ColdFusion using XML and base classes. Thanks for the invite guys - especially Jim, Dee and Doug.

RAD OO Deck from CF United

posted: 16 Sep 2009

Here is the final copy of the RAD OO deck. I'm really happy with the way this presentation is coming together - I think it's finally getting a flow that makes it easy to introduce people to using DSLs in CFML while also introducing ideas like the IBO and custom data types.

Requirements and Estimating Deck from CF United

posted: 16 Sep 2009

Here's a copy of my deck from the Requirements and Estimating presentation at CF United. It provides an introduction to different processes for estimating small, medium and large sites using everything from re-usable specs to Intent Driven Design through agile approaches. I'm repeating on Saturday if anyone missed the talk.

Win a ticket to CF United from Railo!

posted: 16 Sep 2009

Why stop at giving an awesome CFML engine away for free when we can also offer a free ticket to the biggest ColdFusion conference in the world?! Win a ticket to CF United, courtesy of Railo. All the details on the Railo blog.

LogBox and MockBox 1.0 Beta Released

posted: 16 Sep 2009

Luis and the Coldbox team have been busy again. This time they've released LogBox - an Enterprise Logging Library, part of ColdBox 3.0.0 and inspired by log4j. They've also added MockBox for mocking in ColdBox. Check out the posting. I'm just working on a major Coldbox project now and really liking how it is working out. You definitely owe it to yourself to check out Coldbox, and if you're using it, to check out the BER of 3.0. It's gonna be a great release!

CFArgument: State of the Fusion

posted: 03 Feb 2009

Another week, another CFArgument. This time Brian and I discuss the positioning of ColdFusion in the larger web development community and some of the opportunities that come from Adobes successes in promoting Flex and the Railo/JBoss announcement. See the posting on Brians blog. And no Brian, more words NEQ more authority. Just more verbosity. Better luck next week :-)

Presenting at CF Objective :-)

posted: 28 Jan 2009

I'm really pleased to say I will be presenting at CF Objective this year as part of a great lineup. The conference is May 14-16, 2009 at the Hyatt Regency in Minneapolis. Hopefully I'll see you there!

CFArgument: Hibernate or Hiber-NOT :-)

posted: 27 Jan 2009

Brian Rinaldi and I just had our first CF_Argument of the new year! The built-in Object Relational Mapping (ORM) support announced last year for ColdFusion 9 is potentially one of the most important feature of the upcoming release. However, Brian and I discuss the potential pitfalls that the implementation could face which could affect how useful the feature will really be . . . [More]

Want to present on DSLs at Microsoft in April?

posted: 26 Jan 2009

Chris Sells is organizing a mini conference on DSLs at Microsoft in April, so if it's something you might be interested in presenting on, drop him a line. Found via Markus's blog. Not sure whether I'll be pitching as the week before I'll be presenting at the BCS SPA conference in London, so I'm tempted to try to fit in some diving in the Red Sea or Thailand depending on which flights are looking good . . . [UPDATE] My name's Peter and I'm a conference addict :-( I did pitch a couple of presentations. Oh well, the Red Sea is probably nicer in June. I'll let y'all know if I end up being selected. [/UPDATE]

Designer for Custom Mango Skins . . .

posted: 26 Jan 2009

We have some clients looking to use Mango blog, but they want custom skins. We're looking for a designer that can create custom designs and then turn them into clean, working, cross browser skins for Mango (both a screen and a print css layout). If this is something you might be interested in, drop me a line - peter at the domain. If you know anyone who might be interested, please pass the word along!

Code Generation 2009 - Call for Speakers Closes To

posted: 16 Jan 2009

If you want to submit a session to Code Generation 2009 in Cambridge England, today is your last chance! It's a really excellent conference, and this year Steve Kelly and Markus V�lter - two of the top professionals in domain specific modeling/code gen will be doing the keynotes. It should be a great conference and it's really one of the few practitioner focused conferences focused in code generation and DSM.

Want to present on DLSs at Microsoft in April?

posted: 10 Jan 2009

Chris Sells is organizing a mini conference on DSLs at Microsoft in April, so if it's something you might be interested in presenting on, drop him a line. Found via Markus's blog. Not sure whether I'll be pitching as the week before I'll be presenting at the BCS SPA conference in London, so I'm tempted to try to fit in some diving in the Red Sea or Thailand depending on which flights are looking good . . .

Domain Specific Modeling - Key Vendors (and last n

posted: 08 Jan 2009

If you're interested in code generation and/or domain specific modeling, there are some vendors you really need to check out - if only to understand how comprehensive the tooling offerings are starting to become and what it takes to do DSM well. This post lists some of the key DSM vendors together with a very quick summary of why you might want to check each one out . . . [More]

Learning from other languages (and a great present

posted: 08 Jan 2009

If you're reading this blog, congratulations. You're already in the top couple of percent of developers worldwide who take enough interest in their profession to read up on trends in the industry. Double points if you make it to your local language specific usergroup meetings, and even more if you manage to make it to a conference each year. But I want to suggest going a step further, because it's only by going beyond language specific events that you get the benefits of the wider programming community. Tonight I was lucky enough to present at the Domain Driven Design group in New York . . . [More]

Presenting on Domain Specific Modeling at Domain D

posted: 06 Jan 2009

Tomorrow I'll be presenting to the Domain Driven Design group in New York. The focus will be on the synergies between DDD and Domain Specific Modeling/Code Generation. DDD provides a solid framework for developing languages (they call them Ubiquitous Languages), and with DDD the Movie, it's clear that Eric Evans, Vlad Gitlevich et al are also bringing an appreciation of "soft skills" that has long been missing from developer education/training. At the same time, Domain Specific Modeling has a lot to say about the practicalities of implementing executable domain languages (they call them Domain Specific Languages). Eric is very clear in the DDD book that a UL does not need to be executable, and that sometimes ambiguities within a UL will make it more valuable to the domain experts for capturing requirements than a more formal language that is less usable or comprehensible by the people who know the business domain being modeled. However, there are plenty of cases where a UL *can* be executable and the question then is how we can take the experiences within the DDD and DSM domains and map them across the Domain Boundary to make it easier to elicit and then implement requirements more efficiently. This is something I've been thinking a lot about since I first read the DDD book, and conversations with Eric Evans, Martin Fowler, Dan North, Vlad Gitlevich, Markus Voelter and others at ooPSLA '07 in Montreal really convinced me that this is an important space. Hopefully the presentation will provide a good starting point for the experienced team that always attend the DDD events (really, you should go just to meet the people - a pretty impressive bunch). I'm then looking forward to a discussion phase where people can share their experiences in both DDD and DSM and we can discuss some rules of thumb for moving from UL's to DSLs. Feel free to come along!