We’re moving to St. Paul! To the Wells Fargo building specifically.
http://www.twincities.com/localnews/ci_12515723?nclick_check=1
We’re moving to St. Paul! To the Wells Fargo building specifically.
http://www.twincities.com/localnews/ci_12515723?nclick_check=1
In an effort to make the MetaSharp pipelines more powerful I’m about to add the concepts of stages and connectors. I’ve been thinking about it a bit and I drew up some diagrams to help me express how the pattern should work.
At a high level it’s pretty simple, for every pipeline there are multiple stages and for each stage there are multiple steps. Each stage has 1 or many input connectors and 1 or many output connectors, which connects to the next stage of the pipeline.
With this in mind there are four possible types of stages, defined by their input and output connectors. Stages must be chained together with matching input and output connections. You want multiple types because there are certain types of operations that are simply not possible to do simultaneously but there are other types that are completely isolated and are perfectly acceptable to run asynchronously.
For each type of input a complete inner pipeline of steps is created. Meaning each input value from a previous stage will be processed by the same steps. Each inner pipeline will run asynchronously and should not communicate between each other. The stage will complete when all steps have completed running.
This type of stage will accept one input value and produce one output value. It will create exactly one chain of steps and execute synchronously.
This type of stage will accept one input value and have exactly one chain of steps but will produce many output values.
This type of stage will accept many values and run them all through exactly one chain of steps.
From this I should be able to make any type of compilation pipeline imaginable. For example a typical pipeline might be something like this:
In which case you might end up with the following stages:
You could also imagine that last step transforming into multiple objects or multiple files or something like that quite easily. Also the good news is that I think this shouldn’t actually be that complicated. The pipeline simply deals with connecting stages and each stage has a very simple strategy for processing the steps. The real work will lie in the implementing the stages but even then each stage is completely modular and singularly focused.
I am currently reading “The Pragmatic Programmer” while riding the bus to work in the mornings. It’s pretty good and I read something earlier today that I thought was especially interesting, something I hadn’t thought about before at all and I would like to share it here.
Well, software doesn’t quite work that way. Rather than construction, software is more like gardening – it is more organic than concrete. You plant many things in a garden according to an initial plan and conditions. Some thrive, others are destined to end up as compost. You may move plantings relative to each other to take advantage of the interplay of light and shadow, wind and rain. Overgrown plants get split or pruned, and colors that clash may get moved to more aesthetically pleasing locations. You pull weeds, and you fertilize plantings that are in need of some extra help. You constantly monitor the health of the garden, and make adjustments (to the soil, the plants, the layout) as needed.
If you haven’t already taken a look at the Nov / Dec 2008 issue of CoDe magazine I would highly recommend it 😉 On my last gig at Magenic I had the pleasure of working for Rocky Lhotka, Sergey Barskiy and Nermin Dibek on CSLA Light. Along the way we managed to crank out an article for CoDe Magazine related to the work we were doing. Here is a link to the article online, Using CSLA .NET for Silverlight to Build Line-of-Business Applications.
I got a copy of this magazine at the last Twin Cities Code Camp and didn’t even know that I was a co-author of one of the articles in it! It wasn’t until the following monday that a coworker of mine pointed out to me that I was in the magazine and he only knew because he recognized my picture. That was pretty funny.
Now that I’m famous if anyone wants me to autograph their copy of CoDe magazine just let me know!
The prisoner’s dilemma is a classic game of logic that has made its way into the computer science arena in the past. I am presenting Prisoners Dilemma.NET as a general programming challenge based around this game. I will be accepting custom built prisoners and facing them off in a master interrogation competition at the end of this challenge.
public class MafiaHitman : Prisoner
{
public override bool Interrogate(string partnerId)
{
return false;
}
public override void Sentence(InterrogationResponse partnerResponse, string partnerId)
{
}
public override string Name
{
get
{
return “Mafia Hitman”;
}
}
}
|
A / B
|
Silent
|
Betray
|
Plead Insanity
|
Silent
|
2, 2
|
5, 0
|
2, 5
|
Betray
|
0, 5
|
4, 4
|
4, 5
|
Plead Insanity
|
5, 2
|
5, 4
|
5, 5
|
You must be logged in to post a comment.