Archive for July, 2009

What is my F***N’ Domain

July 31, 2009

Right now there are some things at the bottom of my what the hell do I want to learn. What follows is not.

I was grazing Ayende‘s (unconfirmed AI System) blog. He’s starting some posts on developingĀ  software in a domain he knows.

For the last year I’ve been working on stretching my horizons. Specifically trying to learn how to be a real hacker ;). I need to write about what I know.

My domain is automatic equipment for manufacturing electronics. Motion control, vision systems, power supplies as welders, and environmental enclosures

So I’m going to write software for a Pick and Place System. As development occurs we will be adding software features, mechanical and electrical devices. The key for us is that we are going to do this without any actual hardware. I believe if you check out Progress Before Hardware you will see how were going to try to do this.



Explorations in declarative programming

July 29, 2009

I want to explore the revolutionary idea of building software in a GPL (C#) that is declarative in style. This means using Event Driven Architecture, Internal DSLs, and Fluent Interfaces.

If you check this out, you will see that I’m very passionate about what is happening in the software world. There is a revolution happening right now!

I don’t care what language you’re using today (including VB6). By following this blog maybe you and I can chart some of the revolution together.

Some things that were the impetuous for this blog post was these two blog posts.

[1] Braindump on the Event Aggregator Pattern

[2] DDD, TDD, BDD, and CQS

[1] is a pretty concise description of the properties of an Event Aggregator (EA). The thing about EA is that it is more of a framework than a pattern. Something similar to an EA is Active Object. The key property for this is the decoupling of publisher from subscriber.

[2] Describes using a declarative language for interpreting systems with inputs, processors, and outputs. This interpretation uses a syntax of { When, Given, Then }. An example would be:

When some_input_event

Given this_process

Then some_output_event

This a declarative language.

convention over configuration‘ succinctly differentiates the declarative and imperative IMHO.

This exploration will utilize command patterns, events, message buses, computational systems, SRP, closures, decoupling, and you name it we’ll cover it.

Be sure to comment!