[racket] Internet of Things/ Marketplace

From: Jukka Tuominen (jukka.tuominen at finndesign.fi)
Date: Wed Nov 27 12:02:32 EST 2013

Jay, 

I've tried numerous version combinations of Racket/zeromq/your API on ubuntu 10.04 but can't get any to work. These are the versions I've tried:

Racket 5.1 - 5.3.6
Zeromq 2.2 - 4.x
API planet 1.0 - latest pkg
(Several but not every racket versions)

At best, the server gets started (by running either xserver.rkt in drracket) but soon becomes unresponsive. The client crashes immediately taking the drracket along. Neither one is capable of presenting error messages.

I'm propably doing something seriously wrong, but AFAIU the zeromq is correctly compiled and installed now, and your API downloaded to racket. 

To create the proof-of-concept on Liitin, the last versions of each are not necessary. Ideally, I would use ubuntu 10.04 and racket 5.1 and pick working versions of zeromq and your API to go with. Would you, by any chance, remember which versions should work in this setting, if any?

Any other combination you know to work in ubuntu, if any?

Br, jukka

Sent from my iPhone

> On 17.11.2013, at 17.12, Jay McCarthy <jay.mccarthy at gmail.com> wrote:
> 
> Now that the new package system, most people are not maintaining their
> old Planet packages. The zeromq package has had a lot of change in
> particular and perhaps this has gone away for you:
> 
> http://pkgs.racket-lang.org/#[zeromq]
> 
> But also make sure that your library loading environment variables are
> set up right
> 
> Jay
> 
> On Sun, Nov 17, 2013 at 8:07 AM, Jukka Tuominen
> <jukka.tuominen at finndesign.fi> wrote:
>> 
>> There's also Jay's port to zeromq, which is looking very promising.
>> However, when I try to run it (racket 5.3.5/ Ubuntu 10.04) by...
>> 
>> #lang racket
>> 
>> (require (planet "main.rkt" ("jaymccarthy" "zeromq.plt" 2 1)))
>> 
>> ... it displays the following error:
>> 
>> ffi-lib: couldn't open "libzmq.so" (libzmq.so: cannot open shared object
>> file: No such file or directory)
>> 
>> ...eventhough there is one in /usr/local/lib/libzmq.so
>> 
>> Any idea of how to get it working?
>> 
>> br, jukka
>> 
>> 
>>> 
>>> Hi all,
>>> 
>>> some time ago I built a simple client/server proof-of-concept for the
>>> Liitin project ( www.liitin.org )
>>> http://lists.racket-lang.org/users/archive/2011-June/046372.html
>>> 
>>> Although this is still valid for a direct, one-way device/service
>>> communication, I now have a more generic and UX-oriented p-o-c in mind to
>>> follow the Liitin philosophy. Here’s my Internet of Things vision in
>>> brief:
>>> 
>>> 
>>> - A publish/ subscribe server that both users and devices can access
>>> through firewalls. Only the server requires a static, public IP. This will
>>> be available for Liitin users by default.
>>> 
>>> - Once a device is turned on, it automatically connects to the pub/sub
>>> server as a publisher to provide a two-way communication channel: pushing
>>> event notifications to subscribers and acting on subscribers’ commands. SW
>>> services may use the same method.
>>> 
>>> - Once the user has signed onto his/her (Liitin) account, a daemon is
>>> automatically launched to connect to the pub/sub server as a subscriber to
>>> both receive push notifications and allowing to send commands to the
>>> device.
>>> 
>>> - There’s a Device Manager GUI to add and manage devices. The devices only
>>> contain primitive functions in Racket syntax and all the higher-level
>>> programming is handled by Racket on the client side and stored as Liitin
>>> Objects. In effect, you can freely combine functionality from different
>>> devices and between users when shared. E.g.
>>> (when (below-zero? thermometer-x)(turn-on! heater-y))
>>> The event stream can be parsed e.g. for notifications and direct
>>> reactions, or be integrated into various GUI applications.
>>> 
>>> 
>>> I was happy to hear about the package Marketplace for Racket (
>>> http://blog.racket-lang.org/2013/05/marketplace-language-for-network-aware.html
>>> ), and I wonder if it could be used as a starting point? It would be
>>> native Racket all the way through. Another option is to choose some
>>> generic open-source pub-sub server, and make the user and device ends
>>> speak racket.
>>> 
>>> I’m still speaking of a p-o-c, so it’s more important at this phase to be
>>> able to have the ends communicate with each other and to manage multi-user
>>> and multi-device traffic than to make the implementation robust and
>>> secure. Those come later.
>>> 
>>> I will use virtual machines for the pub/sub server and device clients to
>>> begin with. The user clients will be integrated into Liitin accounts. It
>>> would be great to add Arduino support at some point.
>>> 
>>> What do you think, would the Marketplace be a good starting point or do
>>> you recommend some other approach? Any pointers and comments regarding
>>> either the concept or the implementation are greatly appreciated.
>>> 
>>> 
>>> br, jukka
>>> 
>>> 
>>> 
>>> ____________________
>>>  Racket Users list:
>>>  http://lists.racket-lang.org/users
>> 
>> 
>> ____________________
>>  Racket Users list:
>>  http://lists.racket-lang.org/users
> 
> 
> 
> -- 
> Jay McCarthy <jay at cs.byu.edu>
> Assistant Professor / Brigham Young University
> http://faculty.cs.byu.edu/~jay
> 
> "The glory of God is Intelligence" - D&C 93


Posted on the users mailing list.