Prograph – Back in the Day

You’ll never guess what. Someone actually asked what Prograph was like back in the day. No, really, they did. Here goes…

To begin with, I must put my cards on the table. I’m not, nor have ever really been “a programmer” as such. Which I think may be where some of the value might be in my Prography reminiscences.

To put it all in context. It was probably around 1997 or 1998. The internet has just happened. Up until then I was lucky enough to be working in a pretty incredible research lab trying to make the craziest educational software we could come up with. We used HyperCard a tool so beautiful it still makes me cry. Although I say “used”… Sam, Richard, Kris and Stephen were our proper programmers… I tended to join in excitedly, but mainly made black & white graphics or icons.

By 1997 we’d made what you’d call a CMS ( Content Management System ) in HyperCard. It made making web sites easy. So easy that school kids did it, in their Mosaic browsers and even won awards. I remember one class project that was a site about World War II, that just grew and grew. You could start to see what all the fuss about HyperText was.

But HyperCard was struggling to deliver the web pages fast enough. Our real programmer had moved on and I started looking at Prograph, a tool for visual programming. Being a bit artsy, I loved the visual bit. But also, rumour had it that, once compiled, Prograph code could run as fast a C++. There was no way I could ever learn C++, but the idea of creating funny flow charts seemed doable.

So. For what looking back was quite a prestigious project funded by the DTI (UK government) I started creating a tool called Spinalot. My only other experience with doing this sort of thing was hacking AppleScript CGIs with Filemaker. I didn’t have a clue what I was doing. I also had to learn HTTP and SQL ( Prograph could talk to a tiny little database called dtF ). I started work and made a prototype web environment, in which people could fill out a profile, join in discussions, put post-it notes on pages, create web pages and send messages to each other. Yes, it was Facebook for kids and it was 1998ish.

Here’s the bits I, to this day can still go glassy-eyed and frothy mouthed about Prograph and how wonderful it was…

Adding comments didn’t alter your code in ANY way. This meant you could comment something to death and nobody minded, they could be hidden. People even used to sort of DTP their comments. THIS meant people DID comment. This meant I had a leg up in figuring things out. Oh, parameters were commentable too, so if you called “/Do This Thing” you’d be  prompted say for an <object> and a <number>… Wow!

You could “code going forward”. This was a weird one. You simply create a few connected method call, with inputs and outputs and run your code, stepping through each bit. If the method didn’t exist when the running code got there, it simply asked if you’d like to create it now… which the live code patiently waited. You’d then step on a few more steps and if it errored, step back a bit. The WEIRD part of this was that you often, truthfully wrote code that “ran first time” … kinda.

Scrunching. One of the biggest tricks of Prograph, that I’ve yet to see in other tools like say Yahoo Pipes is scrunching. Or as they called it “Opers to Local”. This was a magic feat where a lump of code could be scrunched into one object. Any visual language without this is doomed, there’s only so much 2D space…. this opens up another dimension where clumps of messy code can be “tidied up” and be left with one input and one output. Very cool.

Pair programming. Great idea… how often do you do it? The visual aspect of Prograph meant that working on a screen together, with people cleverer than me, actually WORKED at the human level. This is hard to explain. Similarly, you could smell bad code… visually :-) If with Prograph’s beautiful OO abstraction and scrunching you couldn’t create visually readable code, you were doing something wrong. Obviously.

Having got the Object Oriented bug, the first thing I did was set about creating an object database, not knowing that this was quite a hard thing to do. OK then, it’s impossible. But I made something that resembled an object database to me, not knowing what they were and not able to find anyone who did. It was basically a sort of pickle store that I queried with SQL but got Prograph objects back. It was fast and malleable and crude.

It was around this time that Don Norman, usability god came for a look around our offices on a visit. I showed him my work and asked me to go an work with a quiet genius called Kurt Schmucker in Apple’s Advanced Technology group who was working on some educational web site / Newton (eMate) project. It all seemed very natural at the time, that a non-programming artsy idiot could just get asked to go hang out in the coolest place on earth. Looking back, although Kurt was a Prograph user and advocate, it seemed that each person used their very own programming environment at ATG…. I remember SK8, Lisp, Smalltalk, and Dylan variations and there were others Ive forgotten…

Whilst working with Kurt, he showed me how, if I used HTML templates, rather than pure code to output HTML, that my tool Spinalot could be much more easily adapted. He was right. It seems obvious now but it was genius, trust me. I remember Alex Blanc took my educational community tool and made a ticket sales system out of it. You could sort of do anything that you could conceive of as objects with web pages.

Kurt, at the Prograph conference strongly suggested that if Prograph stored its code differently then it could be used with versioning tools, meaning more people could then work on one project. I didn’t get this, but he was right. Prograph was easy to learn, OO, ran interpreted for degugging and compiled for speed but was geared for “one brain” sized projects.

At the Prograph conference, in Halifax, everyone there seemed to be working on amazing projects. That to me was clue enough that I was using the right tool. Someone had even made a visual Prograph-like spreadsheet ( LKISS ).

On the down side of Prograph, I can’t think of any. Pictorius, the company that made Prograph – described by Kurt as a “boutique language”. bet on Apple’s OpenDoc technology which Apple killed. Trying to stay afloat after this predicament they attempted to make a Windows version… which worked, but seemed somehow to lose their focus… and their users… From a distance it just sort of fizzled out.

In the real world, I’d move jobs and had found the closest textual language to Prograph I could find having tried PHP, Perl and Java… Python. The concept of “open source” was proving itself. With python I could use regular expression libraries or simply download and run tools like Zope that blew my attempts at doing something similar out of the water.

I’m still occasionally hacking with python nowadays, playing with Google App Engine etc.

I used to imagine that one day, if UML compiled to Zope code and was mashed up with Yahoo Pipes that one day, all my Prograph based fervour would mount to something. I’m still waiting.

Prograph, or visual programming, is still the future. Text is very convenient and cheap but crap. All other visual programming environments I tried missed the point somehow, they were locked in 2D space where flow charts just got bigger and messier and less comprehensible. Or worse, they reduce your tools to baby hammers and spanners. Prograph kept everything simple and small, even the big things.

There’s a million other features Prograph had, but I’d need to jog my memory. I do remember demo-ing Prograph to super cool BT research engineers in Marklesham who fell incredulously off their chairs in astonishment. Were Prograph to make a comeback now, I have no idea WHAT it would be. What would you want to make with it? The world has changed so much since then. I lie, I have loads of ideas but they hurt too much :-)

With Prograph I could create things more complex and simple than I could conceive. This still blows my brain. Prograph was like a brain extension, for me at least. Maybe that’s the point… it let non-programmers create very cool stuff. I’ve always been into that idea.

 

 

 

 

 

 

 

 

 

 

6 thoughts on “Prograph – Back in the Day”

  1. Hi,

    thanks for sharing these memories. I’m wondering how you would compare Prograph to Automator. They seem similar, though PG seems to have fewer labels on things, and greater freedom to arrange operations on the canvas. I’d kinda like a more self-explanatory Prograph, personally.

    Also, how would you compare Prograph to the classic style of programming, e.g. as represented by AppleScript? Prograph’s interactions with Command-Clicks etc. seem to be very streamlined, but I’m wondering whether it was all mouse-only programming? Were ther ekeyboard shortcuts? Was it annoying to assemble larger, complex calculations? Concatenating strings? Filling in placeholders in HTML templates?

    To me, the dependencies seemed a bit odd. E.g. in Marten’s tutorial, they do error handling by effectively forcing one command (the error check) to run before another (the one that actually tries to use the user input for calculation). I’d have expected an “error” output or a “filter” with a branch in the final output instead. This approach seems a little counter-intuitive. What did you think about that back then?

    If you could make a new, “better” Prograph, is there anyone inherent in PG’s design that you’d want to see improved, changed? That’s why I’m asking for annoyances or downsides … the best way to understand something is by knowing what didn’t quie work :-)

    Well, thank you for sharing this,
    — Uli

  2. Also, how would you compare Prograph to the classic style of programming, e.g. as represented by AppleScript?

    So many subtle things made a massive difference. For example, when making a repeat loop in AppleScript you’d be forever…

    repeat with every word of some_text as i in every word of some_text
    -- do something here!
    end repeat

    … just look at all that syntax and typing. With Prograph you’d simply make the input ( or the “i that was never even defined” ) a list input. This means, you are not having to invent local variable names then refer to them, you are using the DATA itself.

    At one Prograph conference I invented a sketch where hungover programmers coded on a noisy keyboard…
    … whilst EVEN MORE hungover programmers clickety clicked code.

    Trust me. It’s quicker and easier and less error prone and less obtrusive and easier to read at a distance.

  3. I don’t get what you mean about error checking. I probably wouldn’t do it that way. I used to throw exceptions, it all seemed very neat.

    One of the powerful thing about Prograph was that you had FULL ACCESS to the Mac Toolbox. That meant, if you knew a proper programmer ( like Sam or Kris ) then you could get them to build you an object that say, had one input and one output and start using it, knowing that they had to understand @handles and pointers and the like.

  4. If you could make a new, “better” Prograph, is there anyone inherent in PG’s design that you’d want to see improved, changed? That’s why I’m asking for annoyances or downsides … the best way to understand something is by knowing what didn’t quite work

    Mmm? Let me think…

    Yes, the UI could have had a few more user-friendly features, but the basics really were basic… There were probably only 5 things you could do so learning them didn’t take long. Learning how to assemble these 5 things into magical music was what took the time.

    What Prograph Got Wrong, was often the topic within the Prograph community at the time. Every one had solutions of course.

    It was bizarre… here was a language that was demonstrably better in terms of creation of code ( quick and supported ), documentation of code, debugging of code, working together with code and it ran like stink and yet else, who didn’t get it, programmed in TEXT. It didn’t make much sense.

    At the time, the internet was happening and Java was getting all the glory. I just saw Java as a Prograph with added RSI… in that, it wouldn’t be hard to create a Prograph that generated Java would it? Or python? Maybe not. I think the creator of Prograph at this point has lost steam and the main creative developers of Prograph were busy learning Java.

    My point here is that, a language needs a community to survive, it’s not all about the fineries of syntax, I mean, Perl is still alive and kicking isn’t it?

    I’m sure if I coded in Prograph for a week the annoyances would flood back, but I can’t see that ever happening somehow. And any of these irks were small fixes.

    A new improved Prograph would be a way to deal abstractly with massive cloud data, display visualisations, serve up web pages and iphone apps… And do basically do what it did before – that is – make something very complex much easier. But there isn’t a lot of call for doing that strangely… programmers are cheap ( enough ) so why invest in making their working lives any easier? It’s a system that sort of works.

    Not that I’m saying that “if we had Prograph-like tools, that mortals could use, that the world would automatically be a better place” … but we might get a bit more “done” in the time available :-)

    All of Prograph’s “problems” were nothing to do with Prograph. Apple without Jobs were struggling, people didn’t “get” visual programming at all, the web wasn’t as developed a thing as it is now. Their marketing was hopeless, I think Prograph’s tagline was “The sky is the limit”. Oh. That helps.

    I can imagine the next Prograph being an unholy mashup of Yahoo Pipes, IFTTT.com, Google Apps, BigTable, Processing and ScraperWiki. And Prograph still brings to the table that part of it that lets you model the world, the objects in a way that makes sense to you. It will be written by a 15 year old in JavaScript.

    p.s The original article about Spinalot, published in an Apple Education publication ( I forget its name) is here http://everythingability.com/wp-content/files/spinalot.pdf

  5. Kurt was right, that one of the main problems with Prograph was that it stored all it’s code in a database (I think), so it didn’t play with version control.

    I didn’t realise this at the time, not being au-fait with version control, but in retrospect I can see that it would be a massive problem.

    The simple fix would perhaps be to represent the code as xml or similar under the hood, but a more imaginative fix might be to move the database into the cloud and thus allow people to collaborate inherently.

    The other problem I found when using it was that it felt like there was a lack of structure in just having a blank canvas to start drawing code into. Like Tom says, you could fold down blocks of code, so in reality it was not much different from an IDE with a project overview. , It didn’t even impose that level of structure on you though, which meant that you could have your code in a terrible mess if you wanted.

    In terms of the UI, I think that it could have been a lot friendlier looking – the visual style was quite geeky and hard-edged, and I think a little bit of gloss on top of it with some more intuitive icons etc might have made the thing feel more approachable.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>