Thursday, 28 June 2007

This is an open source software project that is highly experimental.  In fact, it might be just plain crazy.  Our industry is a buzz about Web 2.0, SOA, distributed computing, etc.  Yet, what tools do we have to support distributed programming?


What I mean by distributed programming is the ability to program multiple remote computers (i.e. servers) from within one IDE instance, or as I call it, a DPE – Distributed Programming Environment:




This ASP.NET AJAX DPE consists of the following parts labeled in red:


1)  An Object or Class Bowser, similar to Lutz Roeder's outstanding Reflector, except mine is laid out in the old school Smalltalk System Brower format.  Where are the assemblies IronMath and System.Windows.Forms coming from?


2)  This is a Remote Desktop Connection (RDC) that allows connections to multiple remote computers.  One tab per connection.


3)  This is a Windows Forms application (or service if you will) that runs on the remote computer(s) that allows you to add assemblies to be reflected.  It uses Windows Communication Foundation (WCF) to communicate with the web server hosting the DPE, which then displays the reflected assembly information in the browser window GridViews.  In addition, this Windows Forms application hosts IronPython (and soon the DLR) which also communicates with the web server via WCF so that IronPython code can be executed on the remote server(s).


4)  An IronPython source code editor which provides syntax highlighting, handling multiple source code files, etc.  Again, using WCF to communicate with the IronPython DLL that is running on the remote server(s).


5)   Is the result of running the IronPython code that is displayed in the editor window.


6)   To find remote computers, I use Virtual Earth’s map control to display remote computer locations.  Optionally, a MapPoint Web Service can be used to upload custom locations and attributes.


7)   Oh yeah, an interactive command line console is a must have.





The context of which remote computer I am programming is activated by which tab has been selected.  Meaning that when I click on any tab, any related context, like other dependant tabs and grids are switched too. I add distributed computers by adding tabs for each RDC session, a source code editor, and an interactive interpreter (i.e. console) per remote computer.


Think of the web server as a middle-tier to the WCF enabled remote services that host’s the code for reflecting assemblies and executing Python code.


As I mentioned earlier, I will be embedding the DLR which will add support for more dynamic languages.  Also note that the web-based console window is generic in the sense that it can be a console to a remote cmd window or PowerShell window or…  Same goes for the source code editor, its syntax highlighting also supports multiple languages.


Like I say, it will either be useful or just plain crazy.  That’s why I call it Global System Builder ;-)

January 30, 2008 Update - Global System Builder is available for download at:

Official web site:

Thursday, 28 June 2007 12:50:54 (Pacific Standard Time, UTC-08:00)  #    Comments [6]
Tuesday, 03 July 2007 09:02:42 (Pacific Standard Time, UTC-08:00)
Wow! Where can I get the bits??
Thursday, 05 July 2007 20:16:07 (Pacific Standard Time, UTC-08:00)
Hi Steve,

Thanks for your comment. I have spent the last year working on this part time. It is about 90% complete. There are a few more features I am going to implement first, in addition to more error handling and a few docs. Then I will put it up on or Google Code or… Will let you know when the bits are available.


Thursday, 19 July 2007 07:51:45 (Pacific Standard Time, UTC-08:00)
Yes this is crazy. But crazy in a good way. This is just plain amazing.

Good work and I hope you finish the project. The last 10% is always the hardest.
Monday, 23 July 2007 18:57:09 (Pacific Standard Time, UTC-08:00)
brilliant work. Certainly the coolest thing I've seen in a long time!

when you say this:
"There are a few more features I am going to implement first, in addition to more error handling and a few docs"

i get worried though...

There are always more features! That's just software you know. And the docs... come on, the docs can wait!

I'd like to ask you to have the courage to release as is. Exactly as it is right now.

It's a terrifying thought -- when you know it's not perfect -- but when you demonstrate to yourself the courage to make a step like that, it's really very liberating!

Either way -- best of luck with this very creative piece of work.

(You might consider putting it on CodePlex -- as opposed to sourceforge -- just an option)
Tuesday, 31 July 2007 11:08:59 (Pacific Standard Time, UTC-08:00)
cool work

do you need some help to finsh the last 10%?
Monday, 06 August 2007 19:41:19 (Pacific Standard Time, UTC-08:00)
@ Chris, lb and Martin - thanks for your kind words and encouragement

@ lb - yes, I will consider CodePlex

@ Martin - yes, in due time

Have a look at my Part 2 post for a release schedule:

Comments are closed.
© Copyright 2008 Mitch Barnett - Software Industrialization is the computerization of software design and function.

newtelligence dasBlog 1.9.6264.0  Theme design by Bryan Bell
Feed your aggregator (RSS 2.0)   | Page rendered at Thursday, 13 March 2008 12:37:14 (Pacific Standard Time, UTC-08:00)