This is a proof of concept of an interactive collaborative development environment I built using F# Interactive. The aim here is to explore different ideas for further development, not so much as to present an alternative to Visual Studio :) Source code here (zip). ”Make it pink” code (txt), and Space Scene code (txt).
The video demonstrates a server and two clients collaborating on the same machine.
The way it works is that there are two different roles, the server (EchoServer) and the client (EchoClient). The role of the server is to act as repeater between the clients. When one client inputs source code the code is automatically sent to all the other clients. The server stores the code so when a new client joins it can be brought up to speed with all of the other clients.
This has the following advantages;
Everyone is on the same page with the latest version of the software
All developers work with the very latest source code
The source code is continuously integrated in real time
‘Build’ breaks are noticed (and fixed) immediately
There are also a number of disadvantages;
Cannot undo certain operations with side effects
Code from the network is being downloaded and run on your machine
The entire source code is a stored as single string
The reason I am playing with this is prepare for my next move into Domain Specific Modeling tools.
I’ve included the source code below. It is prototype code, so there are probably a few bugs in it, and as always feedback is greatly appreciated.
*Update: Custom WPF Controls in F# is now available on Codeplex at http://wpffsharp.codeplex.com. You can still download the source from my site here. (Works best withVSTS2010 Beta1)
Screen Shot
It is a translation of SAMS WPF Control Development Unleashed: Building Advanced User Interfaces written by Pavan Podila, and Kevin Hoffman to F#. I picked this book for translation as it covers many advanced topics that other books shy away from. I have been a reader of Pavan Podila’s blog Pixel in Gene for some time, and I have also been waiting for a book dedicated advanced UIs, so when I heard that he was coming out with such a book I knew it was going to be exactly what I needed.
WPF Control Development
The aim behind this project is to serve as an extensive collection non trivial examples of WPF/F# UI. As I introduce people to F#, one thing I am constantly asked is; can it do GUI. Now I can say yes, … well sort of. So far I have only translated 3,500 lines of F# code, and I am still not finished.
I’m doing this primarily as a learning experience and as a forcing function. I have already learned a lot about WPF and F#, and I plan on continuously improving the code as I learn more. Other contributions to the project would be very welcome, and if you spot mistakes or know of any better implementations please don’t hesitate to let me know.
I hope that you find this code to be useful to your WPF and F# projects , and happy coding.
This is an experiment in interactive user generated network graph layout. The video demonstrates the ability to specify a domain meta-model (class diagram) and then specify a model in the domain. The layout engine is force directed with a modified gradient decent algorithm for convergence.
This is essentially a 3D browser for Visual Studio Team Foundation Server Work Items. Each of the cubes represents a Work Item, and each of the lines represents a Work Item Link.
Procedural modeling is an incredible technique for generating highly detailed scenes, as can be seen in the YouTube video. The screen shots below are from my little F# procedural modeling engine.
A point rotated around to make a circle and then revolved to make a sphere
Showing off bitmaps, procedural textures, and polygons
I built this ray tracer for a computer graphics course. It’s based on Dr. Jon Harrop F# ray tracer and has been significantly refactored and extended to include the ability to support polygons, bitmap and procedural textures.