Do you know what HyperCard is? What about Decker? If you’re unfamiliar with any of those two, you’re missing a lot, but no worries, in this post we’re going to build an old-fashioned agenda using Decker (HyperCard) and the Ruby Nylas APIs.
HyperCard combines a flat-file database, a graphical and flexible interface with an easy-to-use programming language called HyperTalk. It was released in 1987 (35 years ago) and it was the first successful hypermedia system. It was used to make applications, games, interactive guides and more:
What is Decker?
Decker is a multimedia platform for creating and sharing interactive documents, with sound, images, hypertext, and scripted behaviour. Its programming language is called Lil.
Based on HyperCard, Decker retains the old-fashioned look and feel of the classic MacOS.
Is your system ready?
If you already have the Nylas Ruby SDK installed and your Ruby environment is configured, then continue reading this blog.
We’re going to use the Nylas Ruby APIs to fetch our contacts, and then create a .deck file that can be opened in Decker. As we’re going to use profile images, we’re going to download them and use Lilt (A command-line interface for Lil, Decker’s scripting language) to convert them into an encoded string that Decker will interpret as a pixelated, black-and-white image.
Here are a couple of screenshots so you can see what I mean:
This is the main screen. Here we can press Enter to start browsing our contacts.
If you’re into wrestling, and you’re old enough, you should know Hulk.
You can see here that they are coming from my contacts:
Installing Decker
The best and easiest way to install Decker is to download (you can pay to support the developer) the .zip file for your operating system from here:
Installing the MiniMagick gem
First, we need to install the Image Magick package for our operating system here, or we can simply use brew:
In order to install Lilt, we need to download the source code and then run the following command:
$ make lilt && make install
Creating the agenda application
We’re going to create a folder and call it Address_Book (feel free to call it something else). Inside, create a file called address_book.rb with the following source code (The deckbuilder section has been reduced to save space, you can check the complete source code here):