SCBAT, Guidance Automation, Code Generation and Rails
Posted Developers, Development Tools, User Interfaces, c#, coding, patterns and principals, programming, ruby, trading, work on Friday, March 17th, 2006.
While reading Sam Gentile’s blog today I came across an article regarding the SCBAT (Smart Client Baseline Architecture Toolkit) and GAT (Guidance Automation Toolkit). I was also discussing this stuff this morning with my friend and collegue Marc. In any case - this stuff reminds me of something I had advised doing (and have begun doing) for a current project. It also reminds me of something in Rails.
The essence of all of this stuff:
You have some application patterns, structures and practices. You want to create all the ’stuff’ you need to use the architecture pattern effectively and efficently, with as little confusion as possible.
For example:
In the now famed Rails web development framework - when you want to create a new project, new view/ controller etc, you just issue some command line .. commands.
For example - to create a new application you can issue a command like:
rails path/to/your/new/application
This will create the folders, base files, etc for your new web application: folders for views, controllers, models, etc. You can also use the rails generate command to create new controllers etc. like:
rails script/generate controller SomeController
Now you have the basics of your Rails application.
SCBAT with GAT
Now - looking at the SCBAT - these great fellows are trying to do is to allow you to enter some data - and it will spit out all of the folders, code etc to make a compliant CAB application. This automates away all of the grunt work, it makes it clear what is needed and it provides the guidance needed to use the frameworks. This is what Sam is talking about in his post here. Cool stuff - making it easier for the team to work effectively with the frameworks.
Frameworks/ System architectures for non-trivial applications are complex. It is a fact of programming life. That being said - doing as much ‘Guidance Automation’ as possible sets the team up for success and takes away increasing amounts of potential error.
Prototype Spiked for a current project as Guidance Automation
I will be leaving my current project (a credit derivative trading smart client application) in 6 weeks. I will be going to a new project (FX options trading stuff). As I have been trying to set up the team I am leaving behind up for continued success using the application infrastructure we have developed - I considered making a custom sort of code generator that functions as these other GAT type things/ Rails type things do… it would take the basic data and go create all the classes, events, folders, etc needed to use the framework effectively.
A screenshot of the basic code generator.

In a few hours I was able to create an application that would take in the information about what the View was to do - and to automate the creation of many classes needed. Since we are using a Model/ View/ Presenter pattern where the View communicates with the Controller via events, there is a set of pattern classes that we can simply create if we know what the view/ controller are trying to do. Hopefully before I leave here - I will be able to leave the team with their own custom Guidance Automation type applicatio that will help keep them on track. This was in truth inspired by how rails works. I am looking forward to using CAB, SCBAT and enabling more and more code generation and other types of guidance automation.
-Chris
Last day at PCH
Posted work on Friday, October 14th, 2005.
Today is my last day at PCH. I will say that I have learned a bunch here and that I will miss all the people. As a Lead Software Architect at PCH - I have been able to hire lots of great developers to work for me. I have also been able to take on some very challenging projects. I think that in the end - I really did not like commuting to - or living in Long Island. I also can say that I really did like building applications for the web that need to service millions and millions of people. They have 2 web sites in the top 100 - both of which were rewarding and challenging to manage over a few years. Another facet that I really enjoyed was working on the internal facing desktop applications. We were able to really remodel workflows, business practices and ways of doing business - and it helped the business. I think that the modeling process - understanding the business and modeling it in software is also extremely exciting and something that the team here was able to do amazingly well. Another thing that I am proud of from my time here is how well we developed our process, methodology and standards. We were able to work out what we have referred to as a ‘Scrum Derivative’. We were able to move to a methodology that was agile, yet organized. We could take requirements (user stories, prioritized and scored) and make effective plans that we could deliver on. I love the idea that software teams can get highly tuned and execute repeatably at a high level of complexity…. That whole thing is just great - Live, in Tune, and on Time!
Anyhow - I wish all my former folks the best and I know there are many genuine friends that I will keep in touch with.
So long PCH…
New job….
Posted work on Saturday, October 1st, 2005.
Wow ~4.5 years of being with Publishers Clearing House - it has been great.
- Built 2 top 100 on internet web sites
- Built 1/2 million LOC SmartClient app.
- Manage > 1 million LOC of pure C# code over several years.
- Hired many excellent developers
- Learned immesurable amounts from my peers, superiors and everone else I saw on the day-to-day
That being said - it was time to change things up for various reasons - so… Now I look forward to starting with Finetix real soon. Wish me luck!
It is hard to take a new position when you are comfortable. It is hard to leave a team you spent years building. It is hard to trade comfort and offers of more comfort for more work, the need to re-prove yourself etc. The bottom line is that, as I have often said “If you are too comfortable - you are not learning”. So - bring on the learnin’