Patterns in Flow-Based Programming (Apr., 2005) J. Paul Morrison In recent years, the concept of "pattern" seems to be have caught the imagination of many in the information technology (IT) industry. This concept was developed extensively by C. Here is a quote from the 1994 book by the author of this paper, "Flow-Based Programming" (ISBN 0-442-01771-5): It is a truism that most businesses in the Western world would stop functioning if it were not for the efforts of tens of thousands, if not hundreds of thousands, of application programmers. The significant fact ... is that application programming in its present form really is hard and in fact has not progressed all that much since the days of the first computers. Flow-Based Programming (FBP) is a technology that addresses these fundamental problems by breaking away from the purely sequential, von Neumann architectural style. When the connections that define an FBP application are converted to diagrammatic form, interesting visual structures emerge. Diagram 1 Diagram 2
DERI Pipes Asynchronous Component-Based Programming It seems hardly worth pointing out that the universe we live in is a highly asynchronous place: it is a place where an infinite number of things are happening all at once. In fact, it might be said that humans, and indeed all living creatures, are designed to operate in such an environment. In spite of this, until recently, computer programs were always based on the model of a sequential, "one step at a time", computer with a single instruction counter. Not surprisingly, therefore, mapping the real world onto such a model has always been difficult, and is becoming more so as the requirements on our systems become ever more stringent Back in the '60s, Dr. How does all this relate to computer programming? During the same period, scientists in labs were developing powerful number-crunching machines, which came to be called "computers" (originally a "computer" was a person), primarily intended for performing repetitive, mathematical calculations on large amounts of data. and further on:
Yahoo Pipes Code Generator (Python): Pipe2Py Wouldn’t it be nice if you coud use Yahoo Pipes as a visual editor for generating your own feed powered applications running on your own server? Now you can… One of the concerns occasionally raised around Yahoo Pipes (other than the stability and responsiveness issues) relates to the dependence that results on the Yahoo pipes platform from creating a pipe. Earlier this year, I started to have a ponder around the idea of a Yahoo Pipes Documentation Project (the code appears to have rotted unfortunately; I think I need to put a proper JSON parser in place:-(, which would at least display a textual description of a pipe based on the JSON representation of it that you can access via the Pipes environment. Greg Gaughan picked up the challenge and came up with a Python code generator for doing just that, written in Python. Anyway – the code is at and it works as follows. This generates the following code: We can then run this code as part of our own program.
DrawFBP Diagramming Tool Over the last several years, an FBP diagram drawing tool, written in Java, has been evolving. It can be obtained by clicking here: DrawFBP Installer, and this is also available on SourceForge - look for the 2.8 version. This version is very powerful, has fairly decent help facilities, and can generate runnable Java, C# or NoFlo network definitions, if it is given enough information. You can now draw an application, click on "Generate Network", fill in a few missing bits of information (if any), and voilà - a running program! DrawFBP can also be downloaded and executed immediately by clicking on JWS version of DrawFBP (*), or downloaded as a jar file . To run the JWS version on a 64-bit machine you have to install the 32-bit JDK in addition to the 64-bit JDK - apparently JWS always runs in 32-bit mode, and Java is able to figure out which version to use. If you wish to use the Help facility, you will need to extract a file called jhall.jar from the DrawFBP Installer zip file.
Just in Case – Saving Your Yahoo Pipes… Yahoo is laying off again, so just in case, if you’re a user of Yahoo Pipes, it may be worth exporting the “source code” of your pipes or any pipes that you make frequent use of in case the Yahoo Pipes service gets cut. Why? Well, a little known fact about Yahoo pipes is that you can get hold of a JSON representation from a pipe that describes how the pipe is constructed… …and some time ago, Greg Gaughan started working on a script that allows you to “compile” these descriptions of your Yahoo Pipes into Python programming code that can be run as a standalone programme on your own server: Pipe2Py. (Greg also did a demo that allowed Pipes to be “migrated” to a version of Pipe2Py running on Google App Engine.) To get a full list of pipes by user, I think you need to be logged in as that user? See also: Yahoo Pipes Code Generator (Python): Pipe2Py PS do I need to start worrying about flickr too?! Like this: Like Loading...
Kilim Kilim is a message-passing framework for Java that provides ultra-lightweight threads and facilities for fast, safe, zero-copy messaging between these threads. It consists of a bytecode postprocessor (a "weaver"), a run time library with buffered mailboxes (multi-producer, single consumer queues) and a user-level scheduler and a type system that puts certain constraints on pointer aliasing within messages to ensure interference-freedom between threads. Hardware facilities are getting distributed, from the micro to the macro levels -- increasing numbers of cores, CPUs in a box, boxes in a data center to a multitude of data centers. The current crop of software architectures, languages and idioms are not suited to this trend. Here are a few reasons: A multi-core/CPU box is internally a distributed system, but operating systems and hardware manufacturers go to great lengths to provide an illusion of local shared memory. The software is released under a MIT-style open source license.
Interactive Graphic Organizer Holt Interactive Graphic Organizers "Graphic organizers are tools that help your brain think." - Kylene Beers Graphic organizers are an illustration of your thoughts on paper. They can help you brainstorm, organize, and visualize your ideas. Click on a graphic organizer to download a PDF of it. Once you’ve downloaded an organizer, type in your comments and print it out. Each graphic organizer below includes Teaching Notes with lessons and tips on how to use graphic organizers in the classroom. Help with PDF Files Generating, Identifying, and Organizing Details Determining Main Idea and Drawing Conclusions Order and Sequence Comparison-Contrast and Cause and Effect Process and Cycle Diagrams Evaluating and Making Decisions Persuasive and Supporting a Position Vocabulary Miscellaneous Organizers Graphic Organizer Teaching Notes
Wiki: FlowBasedProgramming Hot off the press! A second edition of my book is now available from CreateSpace's eStore - and at Amazon.com - Take a look and see how FBP has changed in 15 years! The new edition contains information about the Java and C# implementations, as well as the diagramming tool (DrawFBP), several sections contributed by Mike Beckerle, CTO of Oco Inc., plus a whole new chapter on projects that have appeared in the last 15 years and either build on FBP, or have strong similarities to it. This wiki has been converted to a restricted access wiki - it is still open for anyone to read, but to contribute you will have to get the password from me. The web site for FBP is . I am maintaining a list of recent contacts at RecentContacts. There is now a Google Group on Flow-Based Programming: Wikis