![](/cdn-cgi/image/format=auto/projects/Berry/featured.jpg)
Berry
Mobile DSL for party tricks
(2004-2005)
![Berry logo](/cdn-cgi/image/format=auto/projects/Berry/Berry.png)
Berry was self-hosted cloud computing, it was a domain-specific language for party tricks, and it was a command-line interface for mobile computing characterized by an embarrassingly high response latency.
Before I upgraded to an iPhone, I spent six years and 50,000 minutes talking on a 2002 Kyocera cellphone. It wasn't a smartphone, but I made it act like one using a Mac hack that I wrote called Berry (MacBerry/HackBerry/BlackBerry). I'd send special commands from my phone to my computer via text message, which would do something interesting on my computer and text back the result. Berry let me use my candybar to view new/unread email ("berry unread"), look up events on my calendars ("berry calendar today"), save notes/reminders for later ("berry note 'remember this' using todo"), act as a remote control for my iTunes-based sound system ("berry music Bob Dylan using speakers"), host multi-party phone calls and make international calls ("berry skype Ari Bader-Natal using phone"), and lots more. Pretty good for an old candy-bar phone!
![The amazing 50000-minute cell phone](/cdn-cgi/image/format=auto/img/blog/800px/IMG_1609.jpg)
Lots of ways to issue a Berry request. Decide whether you want to allow requests to come in via email, text messaging, IM, CLI, etc. I generally sent requests from my phone via text message.
![Click to view larger image](/cdn-cgi/image/format=auto/projects/Berry/img/screen1.jpg)
Actions are specially-formatted Applescripts that use desktop applications and data to do something interesting.
![Click to view larger image](/cdn-cgi/image/format=auto/projects/Berry/img/screen2.jpg)
Responders are the channels that get the output of a response back to the person who asked for it. The response channel generally matched the request channel (e.g. text message in, text message out), but alternative responders could be specified in the request.
![Click to view larger image](/cdn-cgi/image/format=auto/projects/Berry/img/screen3.jpg)
A few examples of Berry's domain-specific language in action.
![Click to view larger image](/cdn-cgi/image/format=auto/projects/Berry/img/examples.jpg)
Mac niceties.
![Click to view larger image](/cdn-cgi/image/format=auto/projects/Berry/img/otherwindows.jpg)