March 2009

ZooLib BBDaemon

The ZooLib BBDaemon lets multiple Mac applications talk to USB-connected BlackBerrys concurrently. Obviously this is something that Research in Motion could make possible, but as they haven't we're posting a pre-built installer that takes the pain out of getting things working.

Continue reading "ZooLib BBDaemon" »

February 2009

The Missing Sync for BlackBerry

Mark/Space has released The Missing Sync for BlackBerry 2.0. This latest version provides a rich suite of synchronization options, made possible by a device-side Java application developed by Electric Magic. The Mac application uses our ZBlackBerry Mac/Black SDK for its USB communications.

December 2008

Zorap, Web-Based Video Chat

Zorap web pages are multi-party multimedia environments. Video from your webcam and audio from your microphone, photos, music and video from your own computer are shared to tens of your friends via a Zorap Server. Web content, including YouTube and other video sites are similarly shared, all in an exciting and customizable drag-and-drop interface.

Electric Magic implemented the Mac-specific portions of the Zorap web plugin, supporting Safari, Firefox and other modern web browsers.

September 2008

SiteGrinder Photoshop Plugin

If you’re a Photoshop virtuoso, MediaLab’s SiteGrinder carries those skills over to the creation of exciting web pages. The SiteGrinder Photoshop plugin takes your document’s layers and attributes, crunches through them and generates HTML, CSS and optimized web graphics ready for the public.

SiteGrinder’s UI is beautifully implemented in Flash, and Electric Magic helped MediaLab get that UI working in older and newer versions of PhotoShop.

July 2008

OS X Accessibility from Java

Our client’s application is a scriptable form-filling engine, used by their customers to automate computer-based form submission. Their engine is written in Java, and uses the Abbot GUI testing framework to drive third-party UIs. For Mac OS X support we implemented a JNI shim that made the AX API usable from Java.

March 2008

Mac/BlackBerry SDK

The BlackBerry is a very popular mobile communications device. Official Mac support from Research in Motion is limited to providing the PocketMac utility as a free download. With no official SDK the Mac/BlackBerry ecosystem has seen very little activity.

ZBlackBerry is a suite of code that implements the BlackBerry USB communications protocol in a generic fashion. A few hundred lines of code let Macs use that protocol. A few hundred more allow multiple Mac applications to talk to a single BlackBerry simultaneously, something that has not been possible till now.

Continue reading "Mac/BlackBerry SDK" »

January 2008

iMobimac Modem

The Research In Motion BlackBerry is famous for its connectivity. iMobimac Modem runs on a BlackBerry and the Mac to which it is connected, and lets Mac applications access the Internet using the BlackBerry's connection.

Continue reading "iMobimac Modem" »

May 2006

Knowledge Forum 4.6

Knowledge Forum 4.6's minor version number change belies just how different from its predecessor it really is.

Under the hood KF 4.6 has moved from using ZDBase for its backing store, instead using a tuplebase. This makes it possible to split HTML page generation into separate processes, potentially running on multiple front end machines. It also restores support for a rich client application, now written in Java, using ZTSoup to efficiently communicate changes in the tuplebase, whether made by other clients or by the web interface.

May 2004

Java Tuplebase Access

Initially I provided Java access to a tuplebase instance by implementing Java classes whose most interesting methods were marked as native, and thus invoked via JNI. This was very powerful because Java could use any tuplebase implementation simply by calling the appropriate factory function and I could expose any existing C++ functionality simply by implementing the appropriate JNI glue.

Continue reading "Java Tuplebase Access" »

August 2003

Knowledge Forum 4.5

Knowledge Forum 4.5 was a significant refinement of Knowledge Forum 4.0, with a much richer web interface, although still constrained by the need to support Netscape 4.x-era web browsers.

Continue reading "Knowledge Forum 4.5" »

November 2002

Web Browser Plugins

ZooLib's UI code requires only that there be a ZFakeWindow-derivative at the top of the enclosure hierarchy. In the distant past ZooLib included implementations of ZFakeWindow for Mac control panel cdevs, HyperCard XCMD windows, MacroMind Director XObject windows, Zoom closures, MacApp views and of course still does for ZOSWindows.

It was thus relatively straightforward to implement ZFakeWindow_NSPlugin, which translates between the Netscape browser plugin and the ZFakeWindow APIs. What was actually more difficult was finding a decent implementation of the plugin glue code and header files. In 2002 there wasn't anything that would work with current compilers and with current browsers, so most of the effort was in putting together ZNSPlugin, which is a usable implementation of the glue.

September 2002

Knowledge Forum 4.0

Knowledge Forum 4.0 took the radical direction of being web-only. We'd had some support for web access by virtue of a perl program that used the client's communications protocol to talk directly to the server, but perl wasn't pre-installed on Mac OS (Classic) or Windows, and it had some performance problems. So we ported the perl software to C++ and incorporated it into the server directly.

Continue reading "Knowledge Forum 4.0" »

April 2002

Files

Most of my work till this point had not required 'interesting' operations with file systems, being restricted to creating and opening files in externally determined locations, then reading and writing the files' contents. When it became necessary to ennumerate the contents of directories, and to deal with permissions and locking I took the opportunity to define an API that would be consistent across Windows, Mac and UNIX whilst cleanly accomodating their differences.

Continue reading "Files" »

January 2000

Knowledge Forum 3.0

Knowledge Forum 3.0 took advantage of major enhancements in ZooLib that let the client be released for Windows as well as Mac OS. Much of Knowledge Forum 2.0 had been built around the Mac-only Zoom framework, and so had to be reimplemented. The parts of Knowledge Forum 2.0 built with ZooLib were simply carried forward, with refinements and enhancements.

Continue reading "Knowledge Forum 3.0" »

January 1998

ZFiber: Threads At Interrupt Time

Fibers, at least in this context, are threads implemented using setjmp/longjmp to transfer control in a manner reminiscent of co-routines. They are a generalization of the stack-swapping used by NetPhone to run in the constrained environment it experienced when its deferred tasks were scheduled when an application with a tiny stack was current (yes Print Monitor, I'm talking about you).

Continue reading "ZFiber: Threads At Interrupt Time" »

September 1997

ZOSWindow: Abstracting OS Window APIs

ZooLib had always maintained the ZFakeWindow abstract interface between user interface elements and the hosting environment. This allowed ZooLib UI widgets to be used within MacApp applications, standalone applications, Control Panels, XCMD windows and XObject windows. It worked very well.

However, when the portability axis was across platforms rather than hosting environments there was the potential for a lot of replication and ugly code in ZWindow, the standalone application derivative of ZFakeWindow.

So, I abstracted the interface to OS-windows, placing it in ZOSWindow, and modified ZWindow to use a ZOSWindow, rather than be conditionally compiled for different platforms.

August 1997

Knowledge Forum 2.0

Knowledge Forum 2.0 is a computer supported collaboration environment designed to foster the growth of knowledge building communities. It's based on the CSILE project, developed at the Ontario Institute for Studies in Education and is published by published by Learning in Motion.

Continue reading "Knowledge Forum 2.0" »

April 1996

DigiPhone

The publishers of Digiphone, a VOIP application for Windows, took a shortcut to getting Mac compatibility - they (indirectly) bought NetPhone from Electric Magic, and had me add support for DigiPhone's communications protocol and audio codec.

January 1995

NetPhone

In 1994 the Internet was just starting to be available in people's homes and offices. NetPhone was the first application to support what's now known as VOIP (Voice Over IP) without requiring a high-speed connection.

January 1994

Measurement in Motion

Measurement in Motion is a pioneering math and science analysis and investigation tool. It lets students take measurements from real-world video footage, then tabulate, graph and derive secondary measurements from their data. Conversely, students can generate data algorithmically and superimpose it over video to provide visceral confirmation of hypothesized behavior.

June 1993

FinderHider

FinderHider was a neat hack prompted by Joe Sparks' lamentations over the occasionally unprofessional look of Macromind Director animations. At the time there were several different screen sizes in use, 512 x 384, 640 x 480, 832 x 624 and even (for the well-heeled) 1024 x 768. But the 'stage' (the playback area) of any particular Director title was always fixed in size, and the computer's desktop would be visible when using a title on a computer with a monitor larger than the stage.

FinderHider simply put a border round the stage that would dynamically size to fill the entire screen.

Continue reading "FinderHider" »

November 1992

Marrakech

Marrakech took the hypermedia concepts I explored in WorkSpace and applied them to the problem of managing workflow and assets for multimedia development.

June 1992

Creative Whack Pack

The Creative Whack Pack was a software version of Roger von Oech's famous creativity-enhancing deck of cards. Scott Kim collaborated with Roger on the application's design, which had some neat features including a system-wide hot-key that would bring up a random card, a click on which would seamlessly invoke the application. The app's window also showed animated transitions between screens (dissolve, rotate etc).

June 1991

WorkSpace

WorkSpace was an interesting application that took user interface ideas from Andy Hertzfeld's Servant, and hypermedia ideas from all over, and combined them into a personal information manager that used the web of links between entities to represent meaning. It was never released as a product, but was where I first started creating ZooLib, and formed the basis of Marrakech and ultimately of Measurement in Motion.

June 1990

MediaMaker

MediaMaker was a ground-breaking application that provided a Finder-like interface to manage multimedia content, coupled with a timeline for assembling that content into a finished production. It controlled laserdisc players, VCRs and CD-ROM drives, managed video overlay cards, played AIFF files (no mp3s back then), MacroMind Director presentations and displayed PICT files (no JPEG either).

Continue reading "MediaMaker" »

Project Archives