Conversational Marketing with Scala and Lift
Picture the scene: Im sat in my chair, working away and then I get a fairly crazed phone call from a co-worker in sales - he apparently has this stunning new idea about how to leverage twitter as a marketing platform...
As most of my readers are technical (yes, thats you there) I wont labour the marketing peice, but if your interested, David wrote a really nice article explaining his concept about what happens when social media meets cross-media; find it over here
A cunning scheme indeed
So, from the off, this was going to be an interesting campaign to put together because there were numerous issues, including:
Lots of concurrent (and asynchronous) read / write ops to Twitter API
Backend communication to XMPie cluster
Push production status back down to the browser
Downloading of avatar images automatically from twitter and insert into XMPie asset source
Doing any of this in the given time frame!?
This project was going to have a sizeable set of works attached no doubt to manage the interplay between XMPie systems and the Twitter API.
To implement this campaign, I ended up using a whole bunch of different technologies... The implementing stack eventually ended up utilising the following:
Microsoft SQL Server
In earlier drafts of this article I tried to explain the interplay between components, but simply could not find a good way to articulate the meaning. To that end, I hope diagram gets the structure across sufficiently!:
As you can see - quite a number of software components here! I've been working with Scala and XMPie uProduce for quite a while now and have built up some very nice abstractions that completely hide calling of services under the hood.
This entire campaign was implemented based on top of ICP, using my Scala abstraction along with the awesome power of Scala Actors, scheduling and some generally very cool libraries like Dispatch
A few people asked me to write this post, but as im not sure what specifically you might have been interested in, if you want to know more about how its put together, what does what etc then I would gladly take questions! Just leave a comment at the bottom and i'll get back to you...