revJournal - Interviews

Q & A with Richard Gaskin of Fourth World

Richard

Revolution guru Richard Gaskin is president of Fourth World Media Corporation, a Los Angeles-based consultancy specializing in multi-platform software development. With 15 years' experience, Richard has delivered dozens of applications for both small businesses and Fortune 500 companies on Mac OS, Windows, UNIX, and the World Wide Web.

Welcome to another edition of revTalk, where we meet and greet members of the Revolution developer community. This week, Richard Gaskin talks with us about the future of Revolution, the secret history of Fourth World Media Corporation, and the development of its premiere product, WebMerge...

revJournal: Hello, Richard! Thanks for sitting down with us. Let's start with a programming profile -- can you tell us a bit about your programming background and experience?

RG: In 1987 I worked for a small geophysics firm owned by some friends while I was attending film school. My boss suggested I take a look at some odd thing called "HyperCard", which he'd only briefly looked at and thought it was a clip art database. Poking around I stumbled across the "New Button" menu item, and poof! -- there was a button! Suddenly my mind rushed with possibilities. I spent a nearly obsessive amount of time with HyperCard after that, and eventually left film school to learn programming and never looked back.

I hit the wall early on with HyperCard, wanting multiple windows and vector graphics. When SuperCard came out in '89 I bought it the day it was released, and for years it was everything I wanted. Somewhere along the way it seemed that working with C and C++ would be useful, so I spent some time with those, along with Java later on.

But to be honest, I found these third-generation languages tedious to work with, requiring pages of code for things that were one-liners in higher-level languages like SuperTalk and Transcript. One day I was about two pages into the C code needed to attach a scrollbar to an editable text field in C when I realized I was working way harder than I needed to.

So I returned to fourth-generation languages (4GLs) almost exclusively since then, with a renewed passion, a much better understanding of how they work under the hood, and no regrets. The nice thing about modern software development is that there are so many good tools that you can pick the level that most interests you, from Assembler to scripting. My main interest is in human interfaces so 4GLs are a natural fit, letting me focus on the user experience.

revJournal: Tell us everything we want to know about Fourth World Media in 100 words or less.

RG: The basic stuff is at my Web site, so instead I'll tell you the inside joke about the company name. The truth is that a lot of programmers are inherently lazy, myself included. One of the motivations for working in software is the benefit of being able to build tools to do much of the work. We all dream of someday having a "Build Software" button, which we just click and it does everything while we're out hiking. The irony is that our laziness motivates us to work day and night to make that dream happen.

Like any lazy programmer I caught the tools bug early on, making things to automate repetitive tasks. It got to the point where if I found myself doing something three times, I'd find a way to automate it the fourth time. And that's where "Fourth World" came from.

It's only a lucky coincidence that the languages I prefer are called "fourth generation".

revJournal: How did you come to Revolution?

RG: Through MetaCard. Back in '98 I had a project that needed to go cross-platform and MetaCard was the only game in town that allowed us to leverage a lot of HyperTalk legacy code in a cross-platform system. Coming from a mostly Mac background at the time, it was hard for me at first to get accustomed to MetaCard's somewhat Spartan interface. It's very lean and fast, but my productivity didn't surpass what I'd being doing with other tools until I took a few hours to make some extra tools. I grew very impressed with the engine, but hoped to see a more OS-native development environment so others could jump on board more easily. So when Revolution came along it was just what I had wanted to see happen, and I've been very happy with where they've taken things since.

revJournal: What do you like about it?

RG: Platform-native appearance and a lot of convenient tools are my favorite things about the Revolution development environment over MetaCard. But when we're talking about my favorite things in general we're talking about the engine: small, blinding fast, with a language that is both broad and deep. Where else can you use regex, Internet connectivity, and sprite animation in the same high-level language, and have it run on nearly every modern computer on the planet?

revJournal: Any dislikes?

RG: They've already addressed my previous biggest concern, which was Rev's falling behind on engine parity with MetaCard. Rev 2.0 now has parity with MetaCard, but for a while there were a lot of features that MetaCard users were already using that Rev users had to wait for. It seems the current process at RunRev will allow them to maintain engine parity now. Going forward, there may be ways to use the progressive disclosure principle to make the development environment easier for newcomers to get into quickly. That's maybe a whole other article in itself, but I think there may be ways the interface can be made to appear simpler without necessarily hiding any of the power, revealing options based on the current context. But given the range of features, it's not a simple task. (Editor's Note: Our interview with Mr. Gaskin was completed before news about Runtime Revolution's acquisition of the MetaCard engine was made public.)

revJournal: How do you use Revolution in your work?

RG: Of course there's ongoing development for my clients and my own products, but it's so quick and flexible that it finds its way into nearly all aspects of the work day: I keep my time log in a stack, I have search tools for finding content on my hard drive without Sherlock's cumbersome indexing, I process my Web logs with it, automate customer emails, do my screen captures with it -- hardly an hour goes by without some stack doing something here.

revJournal: Any new projects in the works that you think you?ll be tackling with Revolution?

RG: The harder thing is to try to tackle fewer projects. There's so much you can do with Revolution, but only so many hours in a day. But yes, there is a new product in development here that may be of interest to your readers when it's released. It's too early to talk much about it now, but I can say it will be useful to just about any computer user and may be especially interesting for Rev developers. I look forward to telling you more about it as it gets closer to release.

revJournal: Do you use any other programming languages/development platforms? If so, what do they have that can?t be handled by Revolution?

RG: It's driven by output. If it's for the Web, on the client side I use a combination of GoLive for layout and its nice JavaScript tools, along with custom MetaCard-based tools and sometimes Flash or LiveMotion. On the server it often involves combinations of Perl, PHP, MivaScript, FileMaker, and MetaCard, depending on the task at hand. But for desktop software, lately it's all Revolution and MetaCard. I keep thinking I'll get back to working with Java again some day, but to be honest every time I sit down with Code Warrior the phone rings with another Revolution project. Revolution is more fun for me anyway, so I'm not complaining. In fact, the more time I spend with it the more strongly I feel that unless you're writing device drivers or operating systems, C and C++ are often overkill. Using a lower-level tool for GUI application development is often just throwing money away on lost productivity.

revJournal: Have you switched over to Revolution 2.0? What, if anything, is your favorite feature?

RG: Hasn't everyone switched over to Rev 2.0? ; ) With everything that's been added since v1.1.1 there are several dozen reasons to upgrade. Tops on my list is the enhanced integration with OS X. While the market penetration for OS X is still low relative to all the platforms Rev deploys to, its visibility is very disproportionately high. Also, the Mac community has always had higher expectations for interface consistency than other audiences, and a lot of OS X appearances and behaviors can't be done gracefully through scripting alone. With the new Mach-O foundation, the engine's OS X version keeps us current with Apple's new direction.

revJournal: Do you have a wish list of things you?d like to see in future versions of Revolution?

RG: One of Rev's greatest strengths is that it's a general programming system, but as such it makes questions like that difficult to answer. The things I need for WebMerge, for example, are likely very different for what someone else needs to make cool games, or what another needs for database front-ends, etc. Maybe one thing that would help all of us would be parent scripts, the ability to assign a script that appears in the message path for specified objects but not others. This might make a good step toward an OOP implementation, allowing us to provide a set of behaviors for any number of specific objects in a single script, effectively creating a new class of objects.

revJournal: Let?s talk about WebMerge. Can you describe its development?

RG: It's a classic case of starting with a very focused problem, and then expanding it based on user feedback. Many years ago I needed to publish a small database online and the server wasn't equipped for live database hosting, so I wrote an internal tool to generate static Web pages from templates. I'd been using it for years when it came up in conversation with another developer and he said, "Hey, I could use that. Have you considered turning it into a product?" I looked around and the few existing tools that could be used for creating static Web pages from database content were either too limited or too hard to use, so it seemed worth the effort to put a nice interface on it, document it, and support it. While WebMerge 1.0 addressed my needs well enough, a lot of customers needed just one more feature, and then one more after that, and so on. So rather than slow things down by attempting to put everything in one release, I've been committed to regular updates every few months, adding new features as I go almost like a subscription but without monthly fees. Customers have reacted very positively to this frequent-update approach, and since MetaCard lets us build quickly it's not hard to do. These days I'm migrating more and more of the products I develop to shorter, more frequent release cycles based on what I learned from WebMerge.

revJournal: Were there any aspects of WebMerge that were particularly easy to implement in Revolution? Difficult?

RG: As an HTML generator, WebMerge is all about text processing. And because it's used to publish databases, sometimes involving 50,000 records or more, speed is critical. While Transcript has its roots in the long-established xTalk family of languages, the design of the underlying engine reflects very modern thinking about virtual machines, especially with regard to what's handled in script vs. what's done by the highly-optimized routines in the engine itself. The result is that I can write relatively simple functions using chunk expressions that let the engine handle most of the heavy parsing work. Reviewers and customers alike both regularly comment on WebMerge's speed. I wish I could take credit for that, but really most of that credit rightfully belongs to Scott Raney. One fun thing I'm adding for the next release is a debugger, which lets you step through page generation tag by tag to diagnose errors in your templates. The ability to suspend a script while allowing complete interaction with other scripts is an amazingly powerful thing, something I've never seen in a scripting language before. Consistent with MetaCard's simplicity, I get all that power with one simple line: "wait with messages".

revJournal: How have your clients responded to WebMerge?

RG: Most say I don't charge enough for it, so I must be doing something right. ;) They often rave about the speed, which as I said is all Scott's doing with maybe a little of my time benchmarking to find the fastest ways to do things. In fact, the funny thing is that I do some relatively inefficient things in parsing HTML templates in order to maintain compatibility with FileMaker's CDML for our templates. If I migrated to a more Transcript-like tag syntax I could speed it up a few times over by making smart use of the "do" command and "merge" function. WebMerge currently takes a fraction of a second per page; it's almost scary to think how fast it could get with a redesign.

revJournal: Among your attributes, I would list the fact that you are very active in the Revolution user community. To cite a few examples, you wrote the employee database stack/tutorial that ships with the product, you host the Revolution Embassy (http://www.fourthworld.com/rev/index.html), you?re a regular contributor to the Rev mailing lists, and, most recently, you?ve built RevNet, a stack that serves as sort of a web browser dedicated to Revolution resources. Why so generous with your time?

RG: I've been a very lucky person, with a great many people freely sharing support and information with me over the years. Taking a moment to pass on what was passed to me lets me return the favor, and with software there's an exponential benefit:

Years ago when I was just cutting my teeth on HyperCard, I was poking around in it with ResEdit and came across some things I didn't understand. So I jumped onto a local BBS (the Web hadn't been invented yet) and posted a question to a programming discussion forum. I can't explain how delighted I was when I went back just an hour later and some kind soul had patiently explained what a Pascal string was and how to work with it. It was that moment of "A ha!", when the light comes on in your head and previouly-murky things become crystal clear. And all without leaving my desk.

About that same time I'd been reading Buckminster Fuller's "Critical Path", becoming familiar with his "more with less" engineering philosophy. At some point it all came together for me: electronic communication could radically advance our shared knowledge base to previously unforeseeable levels, and for less than we ever imagined.

If you think about it, the implications are pretty staggering. Someone teaches me something about programming, and I pass that along to others, and they make useful things that empower people to do whatever they do more effectively, and so on. Each step in the chain affects a larger number of people, empowering them to teach whatever they do as well, and bit by bit the whole human system just keeps getting smarter -- all for the cost of a PC and a phone line.

In our little corner of the world we teach each other how to get the most out of a great 4GL. But this sort of highly-leveraged knowledge-sharing is happening everywhere, in every field, paying big dividends for all of us. And as software developers we have the privilege of working upstream, where the things we do can benefit a great many people. For example, UNESCO's Web World site describes some exciting projects happening all over the globe, furthering education, building local enconomies, preserving cultural traditions, and a lot more, all facilitated by electronic communications, much of it Internet-based.

With all this going on, who wouldn't want to participate? Sure, the conversation on the Rev discussion list is a tiny drop in the ocean. But with so many bright people there making so many useful things for so many different audiences, in our modest way we can make quite a useful little ripple.

revJournal: RevNet is not only cool, but extremely useful. What made you decide to build it? After all, your Embassy already seems to serve as an excellent repository of all Rev-related resources.

RG: It started as a dare. I was complaining about AOL's sloppy redraw with a friend who baited me with: "Can you do better?" Well, I certainly don't have an army of engineers or millions of dollars' worth of content, but it seemed perhaps there was a way to at least make a living example of the design ideas discussed in my [url=http://www.fourthworld.com/embassy/articles/netapps.html]"Beyond the Browser"[/url] article. Choosing the Revolution community as the audience for this proof-of-concept was an easy decision since I was familiar with the types of things they could use and hopefully enjoy. Building it was the easy part: it took only about two days to build the client stacks and the server-side CGIs, with another day to make the content and publishing tools -- it's updated with a one-click utility that compresses content stacks and uploads them to the server. The feedback I've been getting for RevNet has been very generous. It seems a lot of people had been looking for examples of some of the techniques it employs with downloading stacks on the fly, and it helps provide a convenient outlet for trading stacks directly in Revolution or MetaCard.

revJournal: If you were playing Geek Survivor, which technology book would be your ?luxury item??

RG: Does a PowerBook count? :) If it has to be a paper-based book there are far too many to choose from, but maybe at the top of the list would be Victor Papanek's "Design for the Real World". With its focus on industrial design it's only peripherally a "technology book", and it's so old it predates the advent of the personal computer. But it has a lot to say about how we use technology, and how we can make smarter use of it. The book could be considered something of a "disruptive technology", still seen by some as controversial with chapter titles like "Phylogenocide: A History of the Industrial Design Profession". It got Papanek blacklisted for a few years until the rest of the world started catching on to the importance of sustainable systems. And even now only a relative handful of product design firms are really pushing whole-systems thinking, most content with appearance alone without thinking about what happens to a product when it reaches its end-of-life. The book had a tremendous impact on me when I first stumbled across it decades ago, and every now and then I return to its timeless message of how industrial design can uniquely contribute to the evolution of a culture. Interface and other industrial designers often underestimate the potential significance of their work. Papanek reminds us that, just as a poorly designed product can frustrate, a great product design can make someone's day, and may even serve to inspire them to do whatever they do just a little better. And to the degree that a design makes good use of materials and minimizes waste (fortunately inherent aspects of working in software), smart product designs can to varying degrees benefit nearly all aspects of human life. Besides, if I'm stuck on a desert island, what better book to have than one that describes sustainable systems.

revJournal: This is really a two-part question: First, if you were in charge of marketing Revolution, is there any market in particular you?d go after? Second, which markets/fields/industries can and should be using Revolution, and what should they be using it for?

RG: As a contract developer, I see a very positive downstream effect from RunRev's marketing efforts. Most professional Rev developers I know have been staying pretty busy. So from my experience it appears the RunRev team is doing an excellent job in getting the word out. They're reaching far beyond the xTalk world, and building a loyal community as they go. I'm not sure I could add much to that other than to just encourage them to keep doing what they're doing.

As for market focus, I think Scott Raney summed it up well in a post to a discussion list recently in which he expressed that the greatest strength of Revolution and MetaCard may be precisely that they avoid being boxed into a niche. The engine is more like a virtual machine than an application, and as such it should remain equally adept at enabling us to build everything from simple utilities to computer-based training systems, and everything in between.

revJournal: What?s you?re favorite third-party plug-in/stack for Revolution?

RG: If I went by how much time I spend with it, it would have to be Jacque Gay's Blocks game. I've lost more time to her games than I care to admit. In terms of features, though, I gotta say Chipp Walters' altBrowser is way cool. I'm very excited about the possibilities as versions for non-Windows platforms become available.

revJournal: What does Revolution need most in order to succeed as a leading development platform?

RG: I think the biggest factor can come not from Revolution itself, but from us developers: more commercial and shareware applications. Rev is used for making many very interesting things, but a good number of these are for internal corporate use so the outside world never learns of them. The applications listed on the [url=http://www.RunRev.com/Revolution1/chooserevolution/index.shtml]Made With Revolution[/url] page are a great start, but I know there's more out there. I would encourage developers to make the best wares they can and market them as effectively as they can. The nice thing about promoting your products is that it gains visibility for yourself and the tool you rely on at the same time.

revJournal: Are you working on any Revolution projects for your own use, simply because it?s fun and simply because you can?

RG: Nearly every day. It's almost a problem, because the challenge of using Rev or MetaCard to make anything I might need is so much fun. But if a solution already exists I usually have to resist the temptation to build a custom version just because I can. Fortunately the client projects I'm working on lately are pretty interesting for me, so they keep me from building too many superfluous gadgets.

revJournal: What were the top three defining moments in your career as a programmer (could be positive or negative, but should emphasize something you learned)?

RG: Maybe the biggest turning point was before I got into programming, when I worked for several years in that geophysics firm. It was the best job I ever had before becoming self-employed, and they taught me a lot of about how a good business is run. Those years were like a living laboratory version of business school, and the experience I gained there, along with their support and encouragement, really made Fourth World possible. The second was while I was working there, when I accidentally made a button in HyperCard. That moment gave me a sense of effortless empowerment that has has stayed with me, and I think a lot of my work since has been trying to recreate that moment for others. The third was when I sold the first copy of my first product back in '94, a collection of development tools for SuperCard called SC Author. I'd done of lot of fun projects for clients before then, but there's something special about making something for yourself, and even more special when others are willing to pay you for it. It was that classic American Dream moment: I took out my business license on 4/4/94, and Fourth World has been keeping me very happily busy since.

revJournal: Any words of advice for users just starting out with Revolution, or contemplating using it for their next project?

RG: Stanley Kubrick was once asked for a tip for film students, and he said, "If you want to learn to make movies, just grab a camera and make any kind of movie at all." I think the same could apply to learning Revolution: roll up your sleeves and dive in. Sure, you'll make mistakes, and of course as you progress you'll learn better ways of doing things. But that's always the case, and the nice thing about programming is no one knows how often you mess up -- you get an error dialog, you fix the problem, and move on to make your next mistake, just like the pros. : ) But with every little thing you learn, you'll discover ways to combine and recombine them to build more ambitious projects. Working with programming languages is a lot like natural languages in this regard: a relatively small vocabulary can be combined in nearly infinite ways to create almost anything you can dream of. And of course one of the best things Rev has going for it is its community. Anytime you get stuck you can just drop a note into the Rev discussion list and do something else for a while, knowing that within an hour or two some very experienced people from all over the world will have answers waiting for you in your In Box.

revJournal: Thank you for taking the time to chat with us. In closing, is there anything you'd like to say to our revJournal readers?

RG: Just keep making software, and have a good time doing it.

© 2005 Fourth World Media Corporation All rights reserved. Portions copyright by the original authors.